3 # GLR skeleton for Bison 
   5 # Copyright (C) 2002-2012 Free Software Foundation, Inc. 
   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, 
  39 # do not change the value of b4_pure_flag, and do not 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
], 
 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_parse_trace_if([1], [0])[ 
 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_if([1], [0])[ 
 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
 
 259 # if defined YYENABLE_NLS && YYENABLE_NLS 
 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) \ 
 322       || (defined __STRICT_ANSI__ && __STRICT_ANSI__)) 
 323 #  define __attribute__(Spec) /* empty */ 
 327 ]b4_locations_if([#define YYOPTIONAL_LOC(Name) Name],[ 
 329 # define YYOPTIONAL_LOC(Name) /* empty */ 
 331 # define YYOPTIONAL_LOC(Name) Name __attribute__ ((__unused__)) 
 335 # define YYASSERT(condition) ((void) ((condition) || (abort (), 0))) 
 338 /* YYFINAL -- State number of the termination state.  */ 
 339 #define YYFINAL  ]b4_final_state_number[ 
 340 /* YYLAST -- Last index in YYTABLE.  */ 
 341 #define YYLAST   ]b4_last[ 
 343 /* YYNTOKENS -- Number of terminals.  */ 
 344 #define YYNTOKENS  ]b4_tokens_number[ 
 345 /* YYNNTS -- Number of nonterminals.  */ 
 346 #define YYNNTS  ]b4_nterms_number[ 
 347 /* YYNRULES -- Number of rules.  */ 
 348 #define YYNRULES  ]b4_rules_number[ 
 349 /* YYNRULES -- Number of states.  */ 
 350 #define YYNSTATES  ]b4_states_number[ 
 351 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule.  */ 
 352 #define YYMAXRHS ]b4_r2_max[ 
 353 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle 
 354    accessed by $0, $-1, etc., in any rule.  */ 
 355 #define YYMAXLEFT ]b4_max_left_semantic_context[ 
 357 /* YYTRANSLATE(X) -- Bison symbol number corresponding to X.  */ 
 358 #define YYUNDEFTOK  ]b4_undef_token_number[ 
 359 #define YYMAXUTOK   ]b4_user_token_number_max[ 
 361 #define YYTRANSLATE(YYX)                                                \ 
 362   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 
 364 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */ 
 365 static const ]b4_int_type_for([b4_translate
])[ yytranslate
[] = 
 371 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */ 
 372 static const ]b4_int_type_for([b4_rline
])[ yyrline
[] = 
 378 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 
 379 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 
 380    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */ 
 381 static const char *const yytname
[] = 
 387 #define YYPACT_NINF ]b4_pact_ninf[ 
 388 #define YYTABLE_NINF ]b4_table_ninf[ 
 390 ]b4_parser_tables_define
[ 
 392 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none).  */ 
 393 static const ]b4_int_type_for([b4_dprec
])[ yydprec
[] = 
 398 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM.  */ 
 399 static const ]b4_int_type_for([b4_merger
])[ yymerger
[] = 
 404 /* YYIMMEDIATE[RULE-NUM] -- True iff rule #RULE-NUM is not to be deferred, as 
 405    in the case of predicates.  */ 
 406 static const yybool yyimmediate
[] = 
 411 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of 
 412    list of conflicting reductions corresponding to action entry for 
 413    state STATE-NUM in yytable.  0 means no conflicts.  The list in 
 414    yyconfl is terminated by a rule number of 0.  */ 
 415 static const ]b4_int_type_for([b4_conflict_list_heads
])[ yyconflp
[] = 
 417   ]b4_conflict_list_heads
[ 
 420 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by 
 421    0, pointed into by YYCONFLP.  */ 
 422 ]dnl Do 
not use b4_int_type_for here
, since there are places where
 
 423 dnl pointers onto yyconfl are taken
, which type is 
"short int *". 
 424 dnl We probably ought to introduce a type 
for confl
. 
 425 [static const short int yyconfl
[] = 
 427   ]b4_conflicting_rules
[ 
 430 /* Prevent warning if -Wmissing-prototypes.  */ 
 431 ]b4_c_ansi_function_decl([yyparse
], [int], b4_parse_param
)[ 
 433 /* Error token number */ 
 436 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 
 437    If N is 0, then set CURRENT to the empty location which ends 
 438    the previous symbol: RHS[0] (always defined).  */ 
 441 #define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc) 
 442 #ifndef YYLLOC_DEFAULT 
 443 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \ 
 447           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \ 
 448           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \ 
 449           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \ 
 450           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \ 
 454           (Current).first_line   = (Current).last_line   =              \ 
 455             YYRHSLOC (Rhs, 0).last_line;                                \ 
 456           (Current).first_column = (Current).last_column =              \ 
 457             YYRHSLOC (Rhs, 0).last_column;                              \ 
 461 /* YY_LOCATION_PRINT -- Print the location on the stream. 
 462    This macro was not mandated originally: define only if we know 
 463    we won't break user code: when these are the locations we know.  */ 
 465 # define YY_LOCATION_PRINT(File, Loc)                   \ 
 466     fprintf (File, "%d.%d-%d.%d",                       \ 
 467              (Loc).first_line, (Loc).first_column,      \ 
 468              (Loc).last_line,  (Loc).last_column) 
 471 #ifndef YYLLOC_DEFAULT 
 472 # define YYLLOC_DEFAULT(Current, Rhs, N) ((void) 0) 
 476 #ifndef YY_LOCATION_PRINT 
 477 # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 
 481 /* YYLEX -- calling `yylex' with the right arguments.  */ 
 482 #define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[ 
 487 #define yynerrs (yystackp->yyerrcnt) 
 489 #define yychar (yystackp->yyrawchar) 
 491 #define yylval (yystackp->yyval) 
 493 #define yylloc (yystackp->yyloc) 
 494 m4_if(b4_prefix
[], [yy
], [], 
 495 [#define b4_prefix[]nerrs yynerrs 
 496 #define b4_prefix[]char yychar 
 497 #define b4_prefix[]lval yylval 
 498 #define b4_prefix[]lloc yylloc])], 
 506 static const int YYEOF 
= 0; 
 507 static const int YYEMPTY 
= -2; 
 509 typedef enum { yyok
, yyaccept
, yyabort
, yyerr 
} YYRESULTTAG
; 
 513     YYRESULTTAG yychk_flag = YYE;               \ 
 514     if (yychk_flag != yyok)                     \ 
 521 #  define YYFPRINTF fprintf 
 524 # define YYDPRINTF(Args)                        \ 
 530 ]b4_yy_symbol_print_generate([b4_c_ansi_function_def
])[ 
 532 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                  \ 
 536         YYFPRINTF (stderr, "%s ", Title);                               \ 
 537         yy_symbol_print (stderr, Type,                                  \ 
 538                          Value]b4_locations_if([, Location])[]b4_user_args[); \ 
 539         YYFPRINTF (stderr, "\n");                                       \ 
 543 /* Nonzero means print parse trace.  It is left uninitialized so that 
 544    multiple parsers can coexist.  */ 
 549 # define YYDPRINTF(Args) 
 550 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) 
 552 #endif /* !YYDEBUG */ 
 554 /* YYINITDEPTH -- initial size of the parser's stacks.  */ 
 556 # define YYINITDEPTH ]b4_stack_depth_init[ 
 559 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 
 560    if the built-in stack extension method is used). 
 562    Do not make this value too large; the results are undefined if 
 563    SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem) 
 564    evaluated with infinite-precision integer arithmetic.  */ 
 567 # define YYMAXDEPTH ]b4_stack_depth_max[ 
 570 /* Minimum number of free items on the stack allowed after an 
 571    allocation.  This is to allow allocation and initialization 
 572    to be completed by functions that call yyexpandGLRStack before the 
 573    stack is expanded, thus insuring that all necessary pointers get 
 574    properly redirected to new data.  */ 
 577 #ifndef YYSTACKEXPANDABLE 
 578 #  define YYSTACKEXPANDABLE 1 
 581 #if YYSTACKEXPANDABLE 
 582 # define YY_RESERVE_GLRSTACK(Yystack)                   \ 
 584     if (Yystack->yyspaceLeft < YYHEADROOM)              \ 
 585       yyexpandGLRStack (Yystack);                       \ 
 588 # define YY_RESERVE_GLRSTACK(Yystack)                   \ 
 590     if (Yystack->yyspaceLeft < YYHEADROOM)              \ 
 591       yyMemoryExhausted (Yystack);                      \ 
 599 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 
 600 #   define yystpcpy stpcpy 
 602 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 
 605 yystpcpy (char *yydest
, const char *yysrc
) 
 608   const char *yys 
= yysrc
; 
 610   while ((*yyd
++ = *yys
++) != '\0') 
 619 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary 
 620    quotes and backslashes, so that it's suitable for yyerror.  The 
 621    heuristic is that double-quoting is unnecessary unless the string 
 622    contains an apostrophe, a comma, or backslash (other than 
 623    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is 
 624    null, do not copy; instead, return the length of what the result 
 627 yytnamerr (char *yyres
, const char *yystr
) 
 632       char const *yyp 
= yystr
; 
 639             goto do_not_strip_quotes
; 
 643               goto do_not_strip_quotes
; 
 656     do_not_strip_quotes
: ; 
 660     return strlen (yystr
); 
 662   return yystpcpy (yyres
, yystr
) - yyres
; 
 666 #endif /* !YYERROR_VERBOSE */ 
 668 /** State numbers, as in LALR(1) machine */ 
 669 typedef int yyStateNum
; 
 671 /** Rule numbers, as in LALR(1) machine */ 
 672 typedef int yyRuleNum
; 
 674 /** Grammar symbol */ 
 675 typedef int yySymbol
; 
 677 /** Item references, as in LALR(1) machine */ 
 678 typedef short int yyItemNum
; 
 680 typedef struct yyGLRState yyGLRState
; 
 681 typedef struct yyGLRStateSet yyGLRStateSet
; 
 682 typedef struct yySemanticOption yySemanticOption
; 
 683 typedef union yyGLRStackItem yyGLRStackItem
; 
 684 typedef struct yyGLRStack yyGLRStack
; 
 687   /** Type tag: always true.  */ 
 689   /** Type tag for yysemantics.  If true, yysval applies, otherwise 
 690    *  yyfirstVal applies.  */ 
 692   /** Number of corresponding LALR(1) machine state.  */ 
 693   yyStateNum yylrState
; 
 694   /** Preceding state in this stack */ 
 696   /** Source position of the last token produced by my symbol */ 
 699     /** First in a chain of alternative reductions producing the 
 700      *  non-terminal corresponding to this state, threaded through 
 702     yySemanticOption
* yyfirstVal
; 
 703     /** Semantic value for this state.  */ 
 706   /** Source location for this state.  */ 
 710 struct yyGLRStateSet 
{ 
 711   yyGLRState
** yystates
; 
 712   /** During nondeterministic operation, yylookaheadNeeds tracks which 
 713    *  stacks have actually needed the current lookahead.  During deterministic 
 714    *  operation, yylookaheadNeeds[0] is not maintained since it would merely 
 715    *  duplicate yychar != YYEMPTY.  */ 
 716   yybool
* yylookaheadNeeds
; 
 717   size_t yysize
, yycapacity
; 
 720 struct yySemanticOption 
{ 
 721   /** Type tag: always false.  */ 
 723   /** Rule number for this reduction */ 
 725   /** The last RHS state in the list of states to be reduced.  */ 
 727   /** The lookahead for this reduction.  */ 
 731   /** Next sibling in chain of options.  To facilitate merging, 
 732    *  options are chained in decreasing order by address.  */ 
 733   yySemanticOption
* yynext
; 
 736 /** Type of the items in the GLR stack.  The yyisState field 
 737  *  indicates which item of the union is valid.  */ 
 738 union yyGLRStackItem 
{ 
 740   yySemanticOption yyoption
; 
 745 ]b4_locations_if([[  /* To compute the location of the error token.  */ 
 746   yyGLRStackItem yyerror_range
[3];]])[ 
 754   YYJMP_BUF yyexception_buffer
; 
 755   yyGLRStackItem
* yyitems
; 
 756   yyGLRStackItem
* yynextFree
; 
 758   yyGLRState
* yysplitPoint
; 
 759   yyGLRState
* yylastDeleted
; 
 760   yyGLRStateSet yytops
; 
 763 #if YYSTACKEXPANDABLE 
 764 static void yyexpandGLRStack (yyGLRStack
* yystackp
); 
 767 static void yyFail (yyGLRStack
* yystackp
]b4_pure_formals
[, const char* yymsg
) 
 768   __attribute__ ((__noreturn__
)); 
 770 yyFail (yyGLRStack
* yystackp
]b4_pure_formals
[, const char* yymsg
) 
 773     yyerror (]b4_yyerror_args
[yymsg
); 
 774   YYLONGJMP (yystackp
->yyexception_buffer
, 1); 
 777 static void yyMemoryExhausted (yyGLRStack
* yystackp
) 
 778   __attribute__ ((__noreturn__
)); 
 780 yyMemoryExhausted (yyGLRStack
* yystackp
) 
 782   YYLONGJMP (yystackp
->yyexception_buffer
, 2); 
 785 #if YYDEBUG || YYERROR_VERBOSE 
 786 /** A printable representation of TOKEN.  */ 
 787 static inline const char* 
 788 yytokenName (yySymbol yytoken
) 
 790   if (yytoken 
== YYEMPTY
) 
 793   return yytname
[yytoken
]; 
 797 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting 
 798  *  at YYVSP[YYLOW0].yystate.yypred.  Leaves YYVSP[YYLOW1].yystate.yypred 
 799  *  containing the pointer to the next state in the chain.  */ 
 800 static void yyfillin (yyGLRStackItem 
*, int, int) __attribute__ ((__unused__
)); 
 802 yyfillin (yyGLRStackItem 
*yyvsp
, int yylow0
, int yylow1
) 
 806   s 
= yyvsp
[yylow0
].yystate
.yypred
; 
 807   for (i 
= yylow0
-1; i 
>= yylow1
; i 
-= 1) 
 810       yyvsp
[i
].yystate
.yylrState 
= s
->yylrState
; 
 812       yyvsp
[i
].yystate
.yyresolved 
= s
->yyresolved
; 
 814         yyvsp
[i
].yystate
.yysemantics
.yysval 
= s
->yysemantics
.yysval
; 
 816         /* The effect of using yysval or yyloc (in an immediate rule) is 
 818         yyvsp
[i
].yystate
.yysemantics
.yyfirstVal 
= NULL
; 
 819       yyvsp
[i
].yystate
.yyloc 
= s
->yyloc
; 
 820       s 
= yyvsp
[i
].yystate
.yypred 
= s
->yypred
; 
 824 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1.  Otherwise, fill in 
 825  * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1. 
 826  * For convenience, always return YYLOW1.  */ 
 827 static inline int yyfill (yyGLRStackItem 
*, int *, int, yybool
) 
 828      __attribute__ ((__unused__
)); 
 830 yyfill (yyGLRStackItem 
*yyvsp
, int *yylow
, int yylow1
, yybool yynormal
) 
 832   if (!yynormal 
&& yylow1 
< *yylow
) 
 834       yyfillin (yyvsp
, *yylow
, yylow1
); 
 840 /** Perform user action for rule number YYN, with RHS length YYRHSLEN, 
 841  *  and top stack item YYVSP.  YYLVALP points to place to put semantic 
 842  *  value ($$), and yylocp points to place for location information 
 843  *  (@@$).  Returns yyok for normal return, yyaccept for YYACCEPT, 
 844  *  yyerr for YYERROR, yyabort for YYABORT.  */ 
 845 /*ARGSUSED*/ static YYRESULTTAG
 
 846 yyuserAction (yyRuleNum yyn
, int yyrhslen
, yyGLRStackItem
* yyvsp
, 
 848               YYLTYPE
* YYOPTIONAL_LOC (yylocp
), 
 852   yybool yynormal 
__attribute__ ((__unused__
)) = 
 853     (yystackp
->yysplitPoint 
== NULL
); 
 855 ]b4_parse_param_use
[]dnl
 
 857 # define yyerrok (yystackp->yyerrState = 0) 
 859 # define YYACCEPT return yyaccept 
 861 # define YYABORT return yyabort 
 863 # define YYERROR return yyerrok, yyerr 
 865 # define YYRECOVERING() (yystackp->yyerrState != 0) 
 867 # define yyclearin (yychar = YYEMPTY) 
 869 # define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal) 
 871 # define YYBACKUP(Token, Value)                                              \ 
 872   return yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")),     \ 
 877     *yyvalp 
= yyval_default
; 
 879     *yyvalp 
= yyvsp
[YYFILL (1-yyrhslen
)].yystate
.yysemantics
.yysval
; 
 880   YYLLOC_DEFAULT ((*yylocp
), (yyvsp 
- yyrhslen
), yyrhslen
); 
 881 ]b4_locations_if([[  yystackp
->yyerror_range
[1].yystate
.yyloc 
= *yylocp
; 
 900 /*ARGSUSED*/ static void 
 901 yyuserMerge (int yyn
, YYSTYPE
* yy0
, YYSTYPE
* yy1
) 
 913                               /* Bison grammar-table manipulation.  */ 
 915 ]b4_yydestruct_generate([b4_c_ansi_function_def
])[ 
 917 /** Number of symbols composing the right hand side of rule #RULE.  */ 
 919 yyrhsLength (yyRuleNum yyrule
) 
 925 yydestroyGLRState (char const *yymsg
, yyGLRState 
*yys
]b4_user_formals
[) 
 928     yydestruct (yymsg
, yystos
[yys
->yylrState
], 
 929                 &yys
->yysemantics
.yysval
]b4_locations_if([, &yys
->yyloc
])[]b4_user_args
[); 
 935           if (yys
->yysemantics
.yyfirstVal
) 
 936             YYFPRINTF (stderr
, "%s unresolved ", yymsg
); 
 938             YYFPRINTF (stderr
, "%s incomplete ", yymsg
); 
 939           yy_symbol_print (stderr
, yystos
[yys
->yylrState
], 
 940                            NULL
]b4_locations_if([, &yys
->yyloc
])[]b4_user_args
[); 
 941           YYFPRINTF (stderr
, "\n"); 
 945       if (yys
->yysemantics
.yyfirstVal
) 
 947           yySemanticOption 
*yyoption 
= yys
->yysemantics
.yyfirstVal
; 
 950           for (yyrh 
= yyoption
->yystate
, yyn 
= yyrhsLength (yyoption
->yyrule
); 
 952                yyrh 
= yyrh
->yypred
, yyn 
-= 1) 
 953             yydestroyGLRState (yymsg
, yyrh
]b4_user_args
[); 
 958 /** Left-hand-side symbol for rule #YYRULE.  */ 
 959 static inline yySymbol
 
 960 yylhsNonterm (yyRuleNum yyrule
) 
 965 #define yypact_value_is_default(yystate) \ 
 966   ]b4_table_value_equals([[pact]], [[yystate]], [b4_pact_ninf])[ 
 968 /** True iff LR state YYSTATE has only a default reduction (regardless 
 971 yyisDefaultedState (yyStateNum yystate
) 
 973   return yypact_value_is_default (yypact
[yystate
]); 
 976 /** The default reduction for YYSTATE, assuming it has one.  */ 
 977 static inline yyRuleNum
 
 978 yydefaultAction (yyStateNum yystate
) 
 980   return yydefact
[yystate
]; 
 983 #define yytable_value_is_error(yytable_value) \ 
 984   ]b4_table_value_equals([[table]], [[yytable_value]], [b4_table_ninf])[ 
 986 /** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN. 
 988  *    R < 0:  Reduce on rule -R. 
 990  *    R > 0:  Shift to state R. 
 991  *  Set *YYCONFLICTS to a pointer into yyconfl to a 0-terminated list 
 992  *  of conflicting reductions. 
 995 yygetLRActions (yyStateNum yystate
, int yytoken
, 
 996                 int* yyaction
, const short int** yyconflicts
) 
 998   int yyindex 
= yypact
[yystate
] + yytoken
; 
 999   if (yypact_value_is_default (yypact
[yystate
]) 
1000       || yyindex 
< 0 || YYLAST 
< yyindex 
|| yycheck
[yyindex
] != yytoken
) 
1002       *yyaction 
= -yydefact
[yystate
]; 
1003       *yyconflicts 
= yyconfl
; 
1005   else if (! yytable_value_is_error (yytable
[yyindex
])) 
1007       *yyaction 
= yytable
[yyindex
]; 
1008       *yyconflicts 
= yyconfl 
+ yyconflp
[yyindex
]; 
1013       *yyconflicts 
= yyconfl 
+ yyconflp
[yyindex
]; 
1017 static inline yyStateNum
 
1018 yyLRgotoState (yyStateNum yystate
, yySymbol yylhs
) 
1020   int yyr 
= yypgoto
[yylhs 
- YYNTOKENS
] + yystate
; 
1021   if (0 <= yyr 
&& yyr 
<= YYLAST 
&& yycheck
[yyr
] == yystate
) 
1022     return yytable
[yyr
]; 
1024     return yydefgoto
[yylhs 
- YYNTOKENS
]; 
1027 static inline yybool
 
1028 yyisShiftAction (int yyaction
) 
1030   return 0 < yyaction
; 
1033 static inline yybool
 
1034 yyisErrorAction (int yyaction
) 
1036   return yyaction 
== 0; 
1041 /** Return a fresh GLRStackItem in YYSTACKP.  The item is an LR state 
1042  *  if YYISSTATE, and otherwise a semantic option.  Callers should call 
1043  *  YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient 
1046 static inline yyGLRStackItem
* 
1047 yynewGLRStackItem (yyGLRStack
* yystackp
, yybool yyisState
) 
1049   yyGLRStackItem
* yynewItem 
= yystackp
->yynextFree
; 
1050   yystackp
->yyspaceLeft 
-= 1; 
1051   yystackp
->yynextFree 
+= 1; 
1052   yynewItem
->yystate
.yyisState 
= yyisState
; 
1056 /** Add a new semantic action that will execute the action for rule 
1057  *  YYRULE on the semantic values in YYRHS to the list of 
1058  *  alternative actions for YYSTATE.  Assumes that YYRHS comes from 
1059  *  stack #YYK of *YYSTACKP. */ 
1061 yyaddDeferredAction (yyGLRStack
* yystackp
, size_t yyk
, yyGLRState
* yystate
, 
1062                      yyGLRState
* yyrhs
, yyRuleNum yyrule
) 
1064   yySemanticOption
* yynewOption 
= 
1065     &yynewGLRStackItem (yystackp
, yyfalse
)->yyoption
; 
1066   yynewOption
->yystate 
= yyrhs
; 
1067   yynewOption
->yyrule 
= yyrule
; 
1068   if (yystackp
->yytops
.yylookaheadNeeds
[yyk
]) 
1070       yynewOption
->yyrawchar 
= yychar
; 
1071       yynewOption
->yyval 
= yylval
; 
1072       yynewOption
->yyloc 
= yylloc
; 
1075     yynewOption
->yyrawchar 
= YYEMPTY
; 
1076   yynewOption
->yynext 
= yystate
->yysemantics
.yyfirstVal
; 
1077   yystate
->yysemantics
.yyfirstVal 
= yynewOption
; 
1079   YY_RESERVE_GLRSTACK (yystackp
); 
1084 /** Initialize YYSET to a singleton set containing an empty stack.  */ 
1086 yyinitStateSet (yyGLRStateSet
* yyset
) 
1089   yyset
->yycapacity 
= 16; 
1090   yyset
->yystates 
= (yyGLRState
**) YYMALLOC (16 * sizeof yyset
->yystates
[0]); 
1091   if (! yyset
->yystates
) 
1093   yyset
->yystates
[0] = NULL
; 
1094   yyset
->yylookaheadNeeds 
= 
1095     (yybool
*) YYMALLOC (16 * sizeof yyset
->yylookaheadNeeds
[0]); 
1096   if (! yyset
->yylookaheadNeeds
) 
1098       YYFREE (yyset
->yystates
); 
1104 static void yyfreeStateSet (yyGLRStateSet
* yyset
) 
1106   YYFREE (yyset
->yystates
); 
1107   YYFREE (yyset
->yylookaheadNeeds
); 
1110 /** Initialize *YYSTACKP to a single empty stack, with total maximum 
1111  *  capacity for all stacks of YYSIZE.  */ 
1113 yyinitGLRStack (yyGLRStack
* yystackp
, size_t yysize
) 
1115   yystackp
->yyerrState 
= 0; 
1117   yystackp
->yyspaceLeft 
= yysize
; 
1119     (yyGLRStackItem
*) YYMALLOC (yysize 
* sizeof yystackp
->yynextFree
[0]); 
1120   if (!yystackp
->yyitems
) 
1122   yystackp
->yynextFree 
= yystackp
->yyitems
; 
1123   yystackp
->yysplitPoint 
= NULL
; 
1124   yystackp
->yylastDeleted 
= NULL
; 
1125   return yyinitStateSet (&yystackp
->yytops
); 
1129 #if YYSTACKEXPANDABLE 
1130 # define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \ 
1131   &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE 
1133 /** If *YYSTACKP is expandable, extend it.  WARNING: Pointers into the 
1134     stack from outside should be considered invalid after this call. 
1135     We always expand when there are 1 or fewer items left AFTER an 
1136     allocation, so that we can avoid having external pointers exist 
1137     across an allocation.  */ 
1139 yyexpandGLRStack (yyGLRStack
* yystackp
) 
1141   yyGLRStackItem
* yynewItems
; 
1142   yyGLRStackItem
* yyp0
, *yyp1
; 
1143   size_t yysize
, yynewSize
; 
1145   yysize 
= yystackp
->yynextFree 
- yystackp
->yyitems
; 
1146   if (YYMAXDEPTH 
- YYHEADROOM 
< yysize
) 
1147     yyMemoryExhausted (yystackp
); 
1148   yynewSize 
= 2*yysize
; 
1149   if (YYMAXDEPTH 
< yynewSize
) 
1150     yynewSize 
= YYMAXDEPTH
; 
1151   yynewItems 
= (yyGLRStackItem
*) YYMALLOC (yynewSize 
* sizeof yynewItems
[0]); 
1153     yyMemoryExhausted (yystackp
); 
1154   for (yyp0 
= yystackp
->yyitems
, yyp1 
= yynewItems
, yyn 
= yysize
; 
1156        yyn 
-= 1, yyp0 
+= 1, yyp1 
+= 1) 
1159       if (*(yybool 
*) yyp0
) 
1161           yyGLRState
* yys0 
= &yyp0
->yystate
; 
1162           yyGLRState
* yys1 
= &yyp1
->yystate
; 
1163           if (yys0
->yypred 
!= NULL
) 
1165               YYRELOC (yyp0
, yyp1
, yys0
->yypred
, yystate
); 
1166           if (! yys0
->yyresolved 
&& yys0
->yysemantics
.yyfirstVal 
!= NULL
) 
1167             yys1
->yysemantics
.yyfirstVal 
= 
1168               YYRELOC(yyp0
, yyp1
, yys0
->yysemantics
.yyfirstVal
, yyoption
); 
1172           yySemanticOption
* yyv0 
= &yyp0
->yyoption
; 
1173           yySemanticOption
* yyv1 
= &yyp1
->yyoption
; 
1174           if (yyv0
->yystate 
!= NULL
) 
1175             yyv1
->yystate 
= YYRELOC (yyp0
, yyp1
, yyv0
->yystate
, yystate
); 
1176           if (yyv0
->yynext 
!= NULL
) 
1177             yyv1
->yynext 
= YYRELOC (yyp0
, yyp1
, yyv0
->yynext
, yyoption
); 
1180   if (yystackp
->yysplitPoint 
!= NULL
) 
1181     yystackp
->yysplitPoint 
= YYRELOC (yystackp
->yyitems
, yynewItems
, 
1182                                  yystackp
->yysplitPoint
, yystate
); 
1184   for (yyn 
= 0; yyn 
< yystackp
->yytops
.yysize
; yyn 
+= 1) 
1185     if (yystackp
->yytops
.yystates
[yyn
] != NULL
) 
1186       yystackp
->yytops
.yystates
[yyn
] = 
1187         YYRELOC (yystackp
->yyitems
, yynewItems
, 
1188                  yystackp
->yytops
.yystates
[yyn
], yystate
); 
1189   YYFREE (yystackp
->yyitems
); 
1190   yystackp
->yyitems 
= yynewItems
; 
1191   yystackp
->yynextFree 
= yynewItems 
+ yysize
; 
1192   yystackp
->yyspaceLeft 
= yynewSize 
- yysize
; 
1197 yyfreeGLRStack (yyGLRStack
* yystackp
) 
1199   YYFREE (yystackp
->yyitems
); 
1200   yyfreeStateSet (&yystackp
->yytops
); 
1203 /** Assuming that YYS is a GLRState somewhere on *YYSTACKP, update the 
1204  *  splitpoint of *YYSTACKP, if needed, so that it is at least as deep as 
1207 yyupdateSplit (yyGLRStack
* yystackp
, yyGLRState
* yys
) 
1209   if (yystackp
->yysplitPoint 
!= NULL 
&& yystackp
->yysplitPoint 
> yys
) 
1210     yystackp
->yysplitPoint 
= yys
; 
1213 /** Invalidate stack #YYK in *YYSTACKP.  */ 
1215 yymarkStackDeleted (yyGLRStack
* yystackp
, size_t yyk
) 
1217   if (yystackp
->yytops
.yystates
[yyk
] != NULL
) 
1218     yystackp
->yylastDeleted 
= yystackp
->yytops
.yystates
[yyk
]; 
1219   yystackp
->yytops
.yystates
[yyk
] = NULL
; 
1222 /** Undelete the last stack in *YYSTACKP that was marked as deleted.  Can 
1223     only be done once after a deletion, and only when all other stacks have 
1226 yyundeleteLastStack (yyGLRStack
* yystackp
) 
1228   if (yystackp
->yylastDeleted 
== NULL 
|| yystackp
->yytops
.yysize 
!= 0) 
1230   yystackp
->yytops
.yystates
[0] = yystackp
->yylastDeleted
; 
1231   yystackp
->yytops
.yysize 
= 1; 
1232   YYDPRINTF ((stderr
, "Restoring last deleted stack as stack #0.\n")); 
1233   yystackp
->yylastDeleted 
= NULL
; 
1237 yyremoveDeletes (yyGLRStack
* yystackp
) 
1241   while (yyj 
< yystackp
->yytops
.yysize
) 
1243       if (yystackp
->yytops
.yystates
[yyi
] == NULL
) 
1247               YYDPRINTF ((stderr
, "Removing dead stacks.\n")); 
1249           yystackp
->yytops
.yysize 
-= 1; 
1253           yystackp
->yytops
.yystates
[yyj
] = yystackp
->yytops
.yystates
[yyi
]; 
1254           /* In the current implementation, it's unnecessary to copy 
1255              yystackp->yytops.yylookaheadNeeds[yyi] since, after 
1256              yyremoveDeletes returns, the parser immediately either enters 
1257              deterministic operation or shifts a token.  However, it doesn't 
1258              hurt, and the code might evolve to need it.  */ 
1259           yystackp
->yytops
.yylookaheadNeeds
[yyj
] = 
1260             yystackp
->yytops
.yylookaheadNeeds
[yyi
]; 
1263               YYDPRINTF ((stderr
, "Rename stack %lu -> %lu.\n", 
1264                           (unsigned long int) yyi
, (unsigned long int) yyj
)); 
1272 /** Shift to a new state on stack #YYK of *YYSTACKP, corresponding to LR 
1273  * state YYLRSTATE, at input position YYPOSN, with (resolved) semantic 
1274  * value *YYVALP and source location *YYLOCP.  */ 
1276 yyglrShift (yyGLRStack
* yystackp
, size_t yyk
, yyStateNum yylrState
, 
1278             YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
) 
1280   yyGLRState
* yynewState 
= &yynewGLRStackItem (yystackp
, yytrue
)->yystate
; 
1282   yynewState
->yylrState 
= yylrState
; 
1283   yynewState
->yyposn 
= yyposn
; 
1284   yynewState
->yyresolved 
= yytrue
; 
1285   yynewState
->yypred 
= yystackp
->yytops
.yystates
[yyk
]; 
1286   yynewState
->yysemantics
.yysval 
= *yyvalp
; 
1287   yynewState
->yyloc 
= *yylocp
; 
1288   yystackp
->yytops
.yystates
[yyk
] = yynewState
; 
1290   YY_RESERVE_GLRSTACK (yystackp
); 
1293 /** Shift stack #YYK of *YYSTACKP, to a new state corresponding to LR 
1294  *  state YYLRSTATE, at input position YYPOSN, with the (unresolved) 
1295  *  semantic value of YYRHS under the action for YYRULE.  */ 
1297 yyglrShiftDefer (yyGLRStack
* yystackp
, size_t yyk
, yyStateNum yylrState
, 
1298                  size_t yyposn
, yyGLRState
* yyrhs
, yyRuleNum yyrule
) 
1300   yyGLRState
* yynewState 
= &yynewGLRStackItem (yystackp
, yytrue
)->yystate
; 
1302   yynewState
->yylrState 
= yylrState
; 
1303   yynewState
->yyposn 
= yyposn
; 
1304   yynewState
->yyresolved 
= yyfalse
; 
1305   yynewState
->yypred 
= yystackp
->yytops
.yystates
[yyk
]; 
1306   yynewState
->yysemantics
.yyfirstVal 
= NULL
; 
1307   yystackp
->yytops
.yystates
[yyk
] = yynewState
; 
1309   /* Invokes YY_RESERVE_GLRSTACK.  */ 
1310   yyaddDeferredAction (yystackp
, yyk
, yynewState
, yyrhs
, yyrule
); 
1314 # define YY_REDUCE_PRINT(Args) 
1316 # define YY_REDUCE_PRINT(Args)          \ 
1319     yy_reduce_print Args;               \ 
1322 /*----------------------------------------------------------------------. 
1323 | Report that stack #YYK of *YYSTACKP is going to be reduced by YYRULE. | 
1324 `----------------------------------------------------------------------*/ 
1326 /*ARGSUSED*/ static inline void 
1327 yy_reduce_print (int yynormal
, yyGLRStackItem
* yyvsp
, size_t yyk
, yyRuleNum yyrule
]b4_user_formals
[) 
1329   int yynrhs 
= yyrhsLength (yyrule
);]b4_locations_if([ 
1332 ]b4_parse_param_use
[]dnl
 
1333 [  YYFPRINTF (stderr
, "Reducing stack %lu by rule %d (line %lu):\n", 
1334              (unsigned long int) yyk
, yyrule 
- 1, 
1335              (unsigned long int) yyrline
[yyrule
]); 
1337     yyfillin (yyvsp
, 1, -yynrhs
); 
1338   /* The symbols being reduced.  */ 
1339   for (yyi 
= 0; yyi 
< yynrhs
; yyi
++) 
1341       YYFPRINTF (stderr
, "   $%d = ", yyi 
+ 1); 
1342       yy_symbol_print (stderr
, 
1343                        yystos
[yyvsp
[yyi 
- yynrhs 
+ 1].yystate
.yylrState
], 
1344                        &yyvsp
[yyi 
- yynrhs 
+ 1].yystate
.yysemantics
.yysval
 
1345                        ]b4_locations_if([, &]b4_rhs_location(yynrhs
, yyi 
+ 1))[]dnl
 
1347       if (!yyvsp
[yyi 
- yynrhs 
+ 1].yystate
.yyresolved
) 
1348         YYFPRINTF (stderr
, " (unresolved)"); 
1349       YYFPRINTF (stderr
, "\n"); 
1354 /** Pop the symbols consumed by reduction #YYRULE from the top of stack 
1355  *  #YYK of *YYSTACKP, and perform the appropriate semantic action on their 
1356  *  semantic values.  Assumes that all ambiguities in semantic values 
1357  *  have been previously resolved.  Set *YYVALP to the resulting value, 
1358  *  and *YYLOCP to the computed location (if any).  Return value is as 
1359  *  for userAction.  */ 
1360 static inline YYRESULTTAG
 
1361 yydoAction (yyGLRStack
* yystackp
, size_t yyk
, yyRuleNum yyrule
, 
1362             YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[) 
1364   int yynrhs 
= yyrhsLength (yyrule
); 
1366   if (yystackp
->yysplitPoint 
== NULL
) 
1368       /* Standard special case: single stack.  */ 
1369       yyGLRStackItem
* yyrhs 
= (yyGLRStackItem
*) yystackp
->yytops
.yystates
[yyk
]; 
1370       YYASSERT (yyk 
== 0); 
1371       yystackp
->yynextFree 
-= yynrhs
; 
1372       yystackp
->yyspaceLeft 
+= yynrhs
; 
1373       yystackp
->yytops
.yystates
[0] = & yystackp
->yynextFree
[-1].yystate
; 
1374       YY_REDUCE_PRINT ((1, yyrhs
, yyk
, yyrule
]b4_user_args
[)); 
1375       return yyuserAction (yyrule
, yynrhs
, yyrhs
, 
1376                            yyvalp
, yylocp
, yystackp
]b4_user_args
[); 
1382       yyGLRStackItem yyrhsVals
[YYMAXRHS 
+ YYMAXLEFT 
+ 1]; 
1383       yys 
= yyrhsVals
[YYMAXRHS 
+ YYMAXLEFT
].yystate
.yypred
 
1384         = yystackp
->yytops
.yystates
[yyk
];]b4_locations_if([[ 
1386         /* Set default location.  */ 
1387         yyrhsVals
[YYMAXRHS 
+ YYMAXLEFT 
- 1].yystate
.yyloc 
= yys
->yyloc
;]])[ 
1388       for (yyi 
= 0; yyi 
< yynrhs
; yyi 
+= 1) 
1393       yyupdateSplit (yystackp
, yys
); 
1394       yystackp
->yytops
.yystates
[yyk
] = yys
; 
1395       YY_REDUCE_PRINT ((0, yyrhsVals 
+ YYMAXRHS 
+ YYMAXLEFT 
- 1, yyk
, yyrule
]b4_user_args
[)); 
1396       return yyuserAction (yyrule
, yynrhs
, yyrhsVals 
+ YYMAXRHS 
+ YYMAXLEFT 
- 1, 
1397                            yyvalp
, yylocp
, yystackp
]b4_user_args
[); 
1401 /** Pop items off stack #YYK of *YYSTACKP according to grammar rule YYRULE, 
1402  *  and push back on the resulting nonterminal symbol.  Perform the 
1403  *  semantic action associated with YYRULE and store its value with the 
1404  *  newly pushed state, if YYFORCEEVAL or if *YYSTACKP is currently 
1405  *  unambiguous.  Otherwise, store the deferred semantic action with 
1406  *  the new state.  If the new state would have an identical input 
1407  *  position, LR state, and predecessor to an existing state on the stack, 
1408  *  it is identified with that existing state, eliminating stack #YYK from 
1409  *  *YYSTACKP.  In this case, the semantic value is 
1410  *  added to the options for the existing state's semantic value. 
1412 static inline YYRESULTTAG
 
1413 yyglrReduce (yyGLRStack
* yystackp
, size_t yyk
, yyRuleNum yyrule
, 
1414              yybool yyforceEval
]b4_user_formals
[) 
1416   size_t yyposn 
= yystackp
->yytops
.yystates
[yyk
]->yyposn
; 
1418   if (yyforceEval 
|| yystackp
->yysplitPoint 
== NULL
) 
1424       yyflag 
= yydoAction (yystackp
, yyk
, yyrule
, &yysval
, 
1425                            &yyloc
]b4_user_args
[); 
1426       if (yyflag 
== yyerr 
&& yystackp
->yysplitPoint 
!= NULL
) 
1428           YYDPRINTF ((stderr
, "Parse on stack %lu rejected by rule #%d.\n", 
1429                      (unsigned long int) yyk
, yyrule 
- 1)); 
1433       YY_SYMBOL_PRINT ("-> $$ =", yyr1
[yyrule
], &yysval
, &yyloc
); 
1434       yyglrShift (yystackp
, yyk
, 
1435                   yyLRgotoState (yystackp
->yytops
.yystates
[yyk
]->yylrState
, 
1436                                  yylhsNonterm (yyrule
)), 
1437                   yyposn
, &yysval
, &yyloc
); 
1443       yyGLRState
* yys
, *yys0 
= yystackp
->yytops
.yystates
[yyk
]; 
1444       yyStateNum yynewLRState
; 
1446       for (yys 
= yystackp
->yytops
.yystates
[yyk
], yyn 
= yyrhsLength (yyrule
); 
1452       yyupdateSplit (yystackp
, yys
); 
1453       yynewLRState 
= yyLRgotoState (yys
->yylrState
, yylhsNonterm (yyrule
)); 
1455                   "Reduced stack %lu by rule #%d; action deferred.  Now in state %d.\n", 
1456                   (unsigned long int) yyk
, yyrule 
- 1, yynewLRState
)); 
1457       for (yyi 
= 0; yyi 
< yystackp
->yytops
.yysize
; yyi 
+= 1) 
1458         if (yyi 
!= yyk 
&& yystackp
->yytops
.yystates
[yyi
] != NULL
) 
1460             yyGLRState
* yyp
, *yysplit 
= yystackp
->yysplitPoint
; 
1461             yyp 
= yystackp
->yytops
.yystates
[yyi
]; 
1462             while (yyp 
!= yys 
&& yyp 
!= yysplit 
&& yyp
->yyposn 
>= yyposn
) 
1464                 if (yyp
->yylrState 
== yynewLRState 
&& yyp
->yypred 
== yys
) 
1466                     yyaddDeferredAction (yystackp
, yyk
, yyp
, yys0
, yyrule
); 
1467                     yymarkStackDeleted (yystackp
, yyk
); 
1468                     YYDPRINTF ((stderr
, "Merging stack %lu into stack %lu.\n", 
1469                                 (unsigned long int) yyk
, 
1470                                 (unsigned long int) yyi
)); 
1476       yystackp
->yytops
.yystates
[yyk
] = yys
; 
1477       yyglrShiftDefer (yystackp
, yyk
, yynewLRState
, yyposn
, yys0
, yyrule
); 
1483 yysplitStack (yyGLRStack
* yystackp
, size_t yyk
) 
1485   if (yystackp
->yysplitPoint 
== NULL
) 
1487       YYASSERT (yyk 
== 0); 
1488       yystackp
->yysplitPoint 
= yystackp
->yytops
.yystates
[yyk
]; 
1490   if (yystackp
->yytops
.yysize 
>= yystackp
->yytops
.yycapacity
) 
1492       yyGLRState
** yynewStates
; 
1493       yybool
* yynewLookaheadNeeds
; 
1497       if (yystackp
->yytops
.yycapacity
 
1498           > (YYSIZEMAX 
/ (2 * sizeof yynewStates
[0]))) 
1499         yyMemoryExhausted (yystackp
); 
1500       yystackp
->yytops
.yycapacity 
*= 2; 
1503         (yyGLRState
**) YYREALLOC (yystackp
->yytops
.yystates
, 
1504                                   (yystackp
->yytops
.yycapacity
 
1505                                    * sizeof yynewStates
[0])); 
1506       if (yynewStates 
== NULL
) 
1507         yyMemoryExhausted (yystackp
); 
1508       yystackp
->yytops
.yystates 
= yynewStates
; 
1510       yynewLookaheadNeeds 
= 
1511         (yybool
*) YYREALLOC (yystackp
->yytops
.yylookaheadNeeds
, 
1512                              (yystackp
->yytops
.yycapacity
 
1513                               * sizeof yynewLookaheadNeeds
[0])); 
1514       if (yynewLookaheadNeeds 
== NULL
) 
1515         yyMemoryExhausted (yystackp
); 
1516       yystackp
->yytops
.yylookaheadNeeds 
= yynewLookaheadNeeds
; 
1518   yystackp
->yytops
.yystates
[yystackp
->yytops
.yysize
] 
1519     = yystackp
->yytops
.yystates
[yyk
]; 
1520   yystackp
->yytops
.yylookaheadNeeds
[yystackp
->yytops
.yysize
] 
1521     = yystackp
->yytops
.yylookaheadNeeds
[yyk
]; 
1522   yystackp
->yytops
.yysize 
+= 1; 
1523   return yystackp
->yytops
.yysize
-1; 
1526 /** True iff YYY0 and YYY1 represent identical options at the top level. 
1527  *  That is, they represent the same rule applied to RHS symbols 
1528  *  that produce the same terminal symbols.  */ 
1530 yyidenticalOptions (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
) 
1532   if (yyy0
->yyrule 
== yyy1
->yyrule
) 
1534       yyGLRState 
*yys0
, *yys1
; 
1536       for (yys0 
= yyy0
->yystate
, yys1 
= yyy1
->yystate
, 
1537            yyn 
= yyrhsLength (yyy0
->yyrule
); 
1539            yys0 
= yys0
->yypred
, yys1 
= yys1
->yypred
, yyn 
-= 1) 
1540         if (yys0
->yyposn 
!= yys1
->yyposn
) 
1548 /** Assuming identicalOptions (YYY0,YYY1), destructively merge the 
1549  *  alternative semantic values for the RHS-symbols of YYY1 and YYY0.  */ 
1551 yymergeOptionSets (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
) 
1553   yyGLRState 
*yys0
, *yys1
; 
1555   for (yys0 
= yyy0
->yystate
, yys1 
= yyy1
->yystate
, 
1556        yyn 
= yyrhsLength (yyy0
->yyrule
); 
1558        yys0 
= yys0
->yypred
, yys1 
= yys1
->yypred
, yyn 
-= 1) 
1562       else if (yys0
->yyresolved
) 
1564           yys1
->yyresolved 
= yytrue
; 
1565           yys1
->yysemantics
.yysval 
= yys0
->yysemantics
.yysval
; 
1567       else if (yys1
->yyresolved
) 
1569           yys0
->yyresolved 
= yytrue
; 
1570           yys0
->yysemantics
.yysval 
= yys1
->yysemantics
.yysval
; 
1574           yySemanticOption
** yyz0p
; 
1575           yySemanticOption
* yyz1
; 
1576           yyz0p 
= &yys0
->yysemantics
.yyfirstVal
; 
1577           yyz1 
= yys1
->yysemantics
.yyfirstVal
; 
1578           while (YYID (yytrue
)) 
1580               if (yyz1 
== *yyz0p 
|| yyz1 
== NULL
) 
1582               else if (*yyz0p 
== NULL
) 
1587               else if (*yyz0p 
< yyz1
) 
1589                   yySemanticOption
* yyz 
= *yyz0p
; 
1591                   yyz1 
= yyz1
->yynext
; 
1592                   (*yyz0p
)->yynext 
= yyz
; 
1594               yyz0p 
= &(*yyz0p
)->yynext
; 
1596           yys1
->yysemantics
.yyfirstVal 
= yys0
->yysemantics
.yyfirstVal
; 
1601 /** Y0 and Y1 represent two possible actions to take in a given 
1602  *  parsing state; return 0 if no combination is possible, 
1603  *  1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred.  */ 
1605 yypreference (yySemanticOption
* y0
, yySemanticOption
* y1
) 
1607   yyRuleNum r0 
= y0
->yyrule
, r1 
= y1
->yyrule
; 
1608   int p0 
= yydprec
[r0
], p1 
= yydprec
[r1
]; 
1612       if (yymerger
[r0
] == 0 || yymerger
[r0
] != yymerger
[r1
]) 
1617   if (p0 
== 0 || p1 
== 0) 
1626 static YYRESULTTAG 
yyresolveValue (yyGLRState
* yys
, 
1627                                    yyGLRStack
* yystackp
]b4_user_formals
[); 
1630 /** Resolve the previous YYN states starting at and including state YYS 
1631  *  on *YYSTACKP. If result != yyok, some states may have been left 
1632  *  unresolved possibly with empty semantic option chains.  Regardless 
1633  *  of whether result = yyok, each state has been left with consistent 
1634  *  data so that yydestroyGLRState can be invoked if necessary.  */ 
1636 yyresolveStates (yyGLRState
* yys
, int yyn
, 
1637                  yyGLRStack
* yystackp
]b4_user_formals
[) 
1641       YYASSERT (yys
->yypred
); 
1642       YYCHK (yyresolveStates (yys
->yypred
, yyn
-1, yystackp
]b4_user_args
[)); 
1643       if (! yys
->yyresolved
) 
1644         YYCHK (yyresolveValue (yys
, yystackp
]b4_user_args
[)); 
1649 /** Resolve the states for the RHS of YYOPT on *YYSTACKP, perform its 
1650  *  user action, and return the semantic value and location in *YYVALP 
1651  *  and *YYLOCP.  Regardless of whether result = yyok, all RHS states 
1652  *  have been destroyed (assuming the user action destroys all RHS 
1653  *  semantic values if invoked).  */ 
1655 yyresolveAction (yySemanticOption
* yyopt
, yyGLRStack
* yystackp
, 
1656                  YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[) 
1658   yyGLRStackItem yyrhsVals
[YYMAXRHS 
+ YYMAXLEFT 
+ 1]; 
1661   YYSTYPE yylval_current
; 
1662   YYLTYPE yylloc_current
; 
1665   yynrhs 
= yyrhsLength (yyopt
->yyrule
); 
1666   yyflag 
= yyresolveStates (yyopt
->yystate
, yynrhs
, yystackp
]b4_user_args
[); 
1670       for (yys 
= yyopt
->yystate
; yynrhs 
> 0; yys 
= yys
->yypred
, yynrhs 
-= 1) 
1671         yydestroyGLRState ("Cleanup: popping", yys
]b4_user_args
[); 
1675   yyrhsVals
[YYMAXRHS 
+ YYMAXLEFT
].yystate
.yypred 
= yyopt
->yystate
;]b4_locations_if([[ 
1677     /* Set default location.  */ 
1678     yyrhsVals
[YYMAXRHS 
+ YYMAXLEFT 
- 1].yystate
.yyloc 
= yyopt
->yystate
->yyloc
;]])[ 
1679   yychar_current 
= yychar
; 
1680   yylval_current 
= yylval
; 
1681   yylloc_current 
= yylloc
; 
1682   yychar 
= yyopt
->yyrawchar
; 
1683   yylval 
= yyopt
->yyval
; 
1684   yylloc 
= yyopt
->yyloc
; 
1685   yyflag 
= yyuserAction (yyopt
->yyrule
, yynrhs
, 
1686                            yyrhsVals 
+ YYMAXRHS 
+ YYMAXLEFT 
- 1, 
1687                            yyvalp
, yylocp
, yystackp
]b4_user_args
[); 
1688   yychar 
= yychar_current
; 
1689   yylval 
= yylval_current
; 
1690   yylloc 
= yylloc_current
; 
1696 yyreportTree (yySemanticOption
* yyx
, int yyindent
) 
1698   int yynrhs 
= yyrhsLength (yyx
->yyrule
); 
1701   yyGLRState
* yystates
[1 + YYMAXRHS
]; 
1702   yyGLRState yyleftmost_state
; 
1704   for (yyi 
= yynrhs
, yys 
= yyx
->yystate
; 0 < yyi
; yyi 
-= 1, yys 
= yys
->yypred
) 
1705     yystates
[yyi
] = yys
; 
1708       yyleftmost_state
.yyposn 
= 0; 
1709       yystates
[0] = &yyleftmost_state
; 
1714   if (yyx
->yystate
->yyposn 
< yys
->yyposn 
+ 1) 
1715     YYFPRINTF (stderr
, "%*s%s -> <Rule %d, empty>\n", 
1716                yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)), 
1719     YYFPRINTF (stderr
, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n", 
1720                yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)), 
1721                yyx
->yyrule 
- 1, (unsigned long int) (yys
->yyposn 
+ 1), 
1722                (unsigned long int) yyx
->yystate
->yyposn
); 
1723   for (yyi 
= 1; yyi 
<= yynrhs
; yyi 
+= 1) 
1725       if (yystates
[yyi
]->yyresolved
) 
1727           if (yystates
[yyi
-1]->yyposn
+1 > yystates
[yyi
]->yyposn
) 
1728             YYFPRINTF (stderr
, "%*s%s <empty>\n", yyindent
+2, "", 
1729                        yytokenName (yystos
[yystates
[yyi
-1]->yylrState
])); 
1731             YYFPRINTF (stderr
, "%*s%s <tokens %lu .. %lu>\n", yyindent
+2, "", 
1732                        yytokenName (yystos
[yystates
[yyi
-1]->yylrState
]), 
1733                        (unsigned long int) (yystates
[yyi
-1]->yyposn 
+ 1), 
1734                        (unsigned long int) yystates
[yyi
]->yyposn
); 
1737         yyreportTree (yystates
[yyi
]->yysemantics
.yyfirstVal
, yyindent
+2); 
1742 /*ARGSUSED*/ static YYRESULTTAG
 
1743 yyreportAmbiguity (yySemanticOption
* yyx0
, 
1744                    yySemanticOption
* yyx1
]b4_pure_formals
[) 
1750   YYFPRINTF (stderr
, "Ambiguity detected.\n"); 
1751   YYFPRINTF (stderr
, "Option 1,\n"); 
1752   yyreportTree (yyx0
, 2); 
1753   YYFPRINTF (stderr
, "\nOption 2,\n"); 
1754   yyreportTree (yyx1
, 2); 
1755   YYFPRINTF (stderr
, "\n"); 
1758   yyerror (]b4_yyerror_args
[YY_("syntax is ambiguous")); 
1760 }]b4_locations_if([[ 
1762 /** Resolve the locations for each of the YYN1 states in *YYSTACKP, 
1763  *  ending at YYS1.  Has no effect on previously resolved states. 
1764  *  The first semantic option of a state is always chosen.  */ 
1766 yyresolveLocations (yyGLRState
* yys1
, int yyn1
, 
1767                     yyGLRStack 
*yystackp
]b4_user_formals
[) 
1771       yyresolveLocations (yys1
->yypred
, yyn1 
- 1, yystackp
]b4_user_args
[); 
1772       if (!yys1
->yyresolved
) 
1774           yySemanticOption 
*yyoption
; 
1775           yyGLRStackItem yyrhsloc
[1 + YYMAXRHS
]; 
1778           YYSTYPE yylval_current
; 
1779           YYLTYPE yylloc_current
; 
1780           yyoption 
= yys1
->yysemantics
.yyfirstVal
; 
1781           YYASSERT (yyoption 
!= NULL
); 
1782           yynrhs 
= yyrhsLength (yyoption
->yyrule
); 
1787               yyresolveLocations (yyoption
->yystate
, yynrhs
, 
1788                                   yystackp
]b4_user_args
[); 
1789               for (yys 
= yyoption
->yystate
, yyn 
= yynrhs
; 
1791                    yys 
= yys
->yypred
, yyn 
-= 1) 
1792                 yyrhsloc
[yyn
].yystate
.yyloc 
= yys
->yyloc
; 
1796               /* Both yyresolveAction and yyresolveLocations traverse the GSS 
1797                  in reverse rightmost order.  It is only necessary to invoke 
1798                  yyresolveLocations on a subforest for which yyresolveAction 
1799                  would have been invoked next had an ambiguity not been 
1800                  detected.  Thus the location of the previous state (but not 
1801                  necessarily the previous state itself) is guaranteed to be 
1802                  resolved already.  */ 
1803               yyGLRState 
*yyprevious 
= yyoption
->yystate
; 
1804               yyrhsloc
[0].yystate
.yyloc 
= yyprevious
->yyloc
; 
1806           yychar_current 
= yychar
; 
1807           yylval_current 
= yylval
; 
1808           yylloc_current 
= yylloc
; 
1809           yychar 
= yyoption
->yyrawchar
; 
1810           yylval 
= yyoption
->yyval
; 
1811           yylloc 
= yyoption
->yyloc
; 
1812           YYLLOC_DEFAULT ((yys1
->yyloc
), yyrhsloc
, yynrhs
); 
1813           yychar 
= yychar_current
; 
1814           yylval 
= yylval_current
; 
1815           yylloc 
= yylloc_current
; 
1820 /** Resolve the ambiguity represented in state YYS in *YYSTACKP, 
1821  *  perform the indicated actions, and set the semantic value of YYS. 
1822  *  If result != yyok, the chain of semantic options in YYS has been 
1823  *  cleared instead or it has been left unmodified except that 
1824  *  redundant options may have been removed.  Regardless of whether 
1825  *  result = yyok, YYS has been left with consistent data so that 
1826  *  yydestroyGLRState can be invoked if necessary.  */ 
1828 yyresolveValue (yyGLRState
* yys
, yyGLRStack
* yystackp
]b4_user_formals
[) 
1830   yySemanticOption
* yyoptionList 
= yys
->yysemantics
.yyfirstVal
; 
1831   yySemanticOption
* yybest
; 
1832   yySemanticOption
** yypp
; 
1836   YYLTYPE 
*yylocp 
= &yys
->yyloc
; 
1838   yybest 
= yyoptionList
; 
1840   for (yypp 
= &yyoptionList
->yynext
; *yypp 
!= NULL
; ) 
1842       yySemanticOption
* yyp 
= *yypp
; 
1844       if (yyidenticalOptions (yybest
, yyp
)) 
1846           yymergeOptionSets (yybest
, yyp
); 
1847           *yypp 
= yyp
->yynext
; 
1851           switch (yypreference (yybest
, yyp
)) 
1853             case 0:]b4_locations_if([[ 
1854               yyresolveLocations (yys
, 1, yystackp
]b4_user_args
[);]])[ 
1855               return yyreportAmbiguity (yybest
, yyp
]b4_pure_args
[); 
1867               /* This cannot happen so it is not worth a YYASSERT (yyfalse), 
1868                  but some compilers complain if the default case is 
1872           yypp 
= &yyp
->yynext
; 
1878       yySemanticOption
* yyp
; 
1879       int yyprec 
= yydprec
[yybest
->yyrule
]; 
1880       yyflag 
= yyresolveAction (yybest
, yystackp
, &yysval
, 
1881                                 yylocp
]b4_user_args
[); 
1883         for (yyp 
= yybest
->yynext
; yyp 
!= NULL
; yyp 
= yyp
->yynext
) 
1885             if (yyprec 
== yydprec
[yyp
->yyrule
]) 
1887                 YYSTYPE yysval_other
; 
1889                 yyflag 
= yyresolveAction (yyp
, yystackp
, &yysval_other
, 
1890                                           &yydummy
]b4_user_args
[); 
1893                     yydestruct ("Cleanup: discarding incompletely merged value for", 
1894                                 yystos
[yys
->yylrState
], 
1895                                 &yysval
]b4_locations_if([, yylocp
])[]b4_user_args
[); 
1898                 yyuserMerge (yymerger
[yyp
->yyrule
], &yysval
, &yysval_other
); 
1903     yyflag 
= yyresolveAction (yybest
, yystackp
, &yysval
, yylocp
]b4_user_args
[); 
1907       yys
->yyresolved 
= yytrue
; 
1908       yys
->yysemantics
.yysval 
= yysval
; 
1911     yys
->yysemantics
.yyfirstVal 
= NULL
; 
1916 yyresolveStack (yyGLRStack
* yystackp
]b4_user_formals
[) 
1918   if (yystackp
->yysplitPoint 
!= NULL
) 
1923       for (yyn 
= 0, yys 
= yystackp
->yytops
.yystates
[0]; 
1924            yys 
!= yystackp
->yysplitPoint
; 
1925            yys 
= yys
->yypred
, yyn 
+= 1) 
1927       YYCHK (yyresolveStates (yystackp
->yytops
.yystates
[0], yyn
, yystackp
 
1934 yycompressStack (yyGLRStack
* yystackp
) 
1936   yyGLRState
* yyp
, *yyq
, *yyr
; 
1938   if (yystackp
->yytops
.yysize 
!= 1 || yystackp
->yysplitPoint 
== NULL
) 
1941   for (yyp 
= yystackp
->yytops
.yystates
[0], yyq 
= yyp
->yypred
, yyr 
= NULL
; 
1942        yyp 
!= yystackp
->yysplitPoint
; 
1943        yyr 
= yyp
, yyp 
= yyq
, yyq 
= yyp
->yypred
) 
1946   yystackp
->yyspaceLeft 
+= yystackp
->yynextFree 
- yystackp
->yyitems
; 
1947   yystackp
->yynextFree 
= ((yyGLRStackItem
*) yystackp
->yysplitPoint
) + 1; 
1948   yystackp
->yyspaceLeft 
-= yystackp
->yynextFree 
- yystackp
->yyitems
; 
1949   yystackp
->yysplitPoint 
= NULL
; 
1950   yystackp
->yylastDeleted 
= NULL
; 
1954       yystackp
->yynextFree
->yystate 
= *yyr
; 
1956       yystackp
->yynextFree
->yystate
.yypred 
= &yystackp
->yynextFree
[-1].yystate
; 
1957       yystackp
->yytops
.yystates
[0] = &yystackp
->yynextFree
->yystate
; 
1958       yystackp
->yynextFree 
+= 1; 
1959       yystackp
->yyspaceLeft 
-= 1; 
1964 yyprocessOneStack (yyGLRStack
* yystackp
, size_t yyk
, 
1965                    size_t yyposn
]b4_pure_formals
[) 
1967   while (yystackp
->yytops
.yystates
[yyk
] != NULL
) 
1969       yyStateNum yystate 
= yystackp
->yytops
.yystates
[yyk
]->yylrState
; 
1970       YYDPRINTF ((stderr
, "Stack %lu Entering state %d\n", 
1971                   (unsigned long int) yyk
, yystate
)); 
1973       YYASSERT (yystate 
!= YYFINAL
); 
1975       if (yyisDefaultedState (yystate
)) 
1978           yyRuleNum yyrule 
= yydefaultAction (yystate
); 
1981               YYDPRINTF ((stderr
, "Stack %lu dies.\n", 
1982                           (unsigned long int) yyk
)); 
1983               yymarkStackDeleted (yystackp
, yyk
); 
1986           yyflag 
= yyglrReduce (yystackp
, yyk
, yyrule
, yyimmediate
[yyrule
]]b4_user_args
[); 
1987           if (yyflag 
== yyerr
) 
1989               YYDPRINTF ((stderr
, "Stack %lu dies (predicate failure or explicit user error).\n", 
1990                           (unsigned long int) yyk
)); 
1991               yymarkStackDeleted (yystackp
, yyk
); 
2001           const short int* yyconflicts
; 
2003           yystackp
->yytops
.yylookaheadNeeds
[yyk
] = yytrue
; 
2004           if (yychar 
== YYEMPTY
) 
2006               YYDPRINTF ((stderr
, "Reading a token: ")); 
2010           if (yychar 
<= YYEOF
) 
2012               yychar 
= yytoken 
= YYEOF
; 
2013               YYDPRINTF ((stderr
, "Now at end of input.\n")); 
2017               yytoken 
= YYTRANSLATE (yychar
); 
2018               YY_SYMBOL_PRINT ("Next token is", yytoken
, &yylval
, &yylloc
); 
2021           yygetLRActions (yystate
, yytoken
, &yyaction
, &yyconflicts
); 
2023           while (*yyconflicts 
!= 0) 
2026               size_t yynewStack 
= yysplitStack (yystackp
, yyk
); 
2027               YYDPRINTF ((stderr
, "Splitting off stack %lu from %lu.\n", 
2028                           (unsigned long int) yynewStack
, 
2029                           (unsigned long int) yyk
)); 
2030               yyflag 
= yyglrReduce (yystackp
, yynewStack
, 
2032                                     yyimmediate
[*yyconflicts
]]b4_user_args
[); 
2034                 YYCHK (yyprocessOneStack (yystackp
, yynewStack
, 
2035                                           yyposn
]b4_pure_args
[)); 
2036               else if (yyflag 
== yyerr
) 
2038                   YYDPRINTF ((stderr
, "Stack %lu dies.\n", 
2039                               (unsigned long int) yynewStack
)); 
2040                   yymarkStackDeleted (yystackp
, yynewStack
); 
2047           if (yyisShiftAction (yyaction
)) 
2049           else if (yyisErrorAction (yyaction
)) 
2051               YYDPRINTF ((stderr
, "Stack %lu dies.\n", 
2052                           (unsigned long int) yyk
)); 
2053               yymarkStackDeleted (yystackp
, yyk
); 
2058               YYRESULTTAG yyflag 
= yyglrReduce (yystackp
, yyk
, -yyaction
, 
2059                                                 yyimmediate
[-yyaction
]]b4_user_args
[); 
2060               if (yyflag 
== yyerr
) 
2062                   YYDPRINTF ((stderr
, "Stack %lu dies (predicate failure or explicit user error).\n", 
2063                               (unsigned long int) yyk
)); 
2064                   yymarkStackDeleted (yystackp
, yyk
); 
2067               else if (yyflag 
!= yyok
) 
2075 /*ARGSUSED*/ static void 
2076 yyreportSyntaxError (yyGLRStack
* yystackp
]b4_user_formals
[) 
2078   if (yystackp
->yyerrState 
!= 0) 
2080 #if ! YYERROR_VERBOSE 
2081   yyerror (]b4_lyyerror_args
[YY_("syntax error")); 
2083   yySymbol yytoken 
= yychar 
== YYEMPTY 
? YYEMPTY 
: YYTRANSLATE (yychar
); 
2084   size_t yysize0 
= yytnamerr (NULL
, yytokenName (yytoken
)); 
2085   size_t yysize 
= yysize0
; 
2087   yybool yysize_overflow 
= yyfalse
; 
2089   enum { YYERROR_VERBOSE_ARGS_MAXIMUM 
= 5 }; 
2090   /* Internationalized format string. */ 
2091   const char *yyformat 
= 0; 
2092   /* Arguments of yyformat. */ 
2093   char const *yyarg
[YYERROR_VERBOSE_ARGS_MAXIMUM
]; 
2094   /* Number of reported tokens (one for the "unexpected", one per 
2098   /* There are many possibilities here to consider: 
2099      - If this state is a consistent state with a default action, then 
2100        the only way this function was invoked is if the default action 
2101        is an error action.  In that case, don't check for expected 
2102        tokens because there are none. 
2103      - The only way there can be no lookahead present (in yychar) is if 
2104        this state is a consistent state with a default action.  Thus, 
2105        detecting the absence of a lookahead is sufficient to determine 
2106        that there is no unexpected or expected token to report.  In that 
2107        case, just report a simple "syntax error". 
2108      - Don't assume there isn't a lookahead just because this state is a 
2109        consistent state with a default action.  There might have been a 
2110        previous inconsistent state, consistent state with a non-default 
2111        action, or user semantic action that manipulated yychar. 
2112      - Of course, the expected token list depends on states to have 
2113        correct lookahead information, and it depends on the parser not 
2114        to perform extra reductions after fetching a lookahead from the 
2115        scanner and before detecting a syntax error.  Thus, state merging 
2116        (from LALR or IELR) and default reductions corrupt the expected 
2117        token list.  However, the list is correct for canonical LR with 
2118        one exception: it will still contain any token that will not be 
2119        accepted due to an error action in a later state. 
2121   if (yytoken 
!= YYEMPTY
) 
2123       int yyn 
= yypact
[yystackp
->yytops
.yystates
[0]->yylrState
]; 
2124       yyarg
[yycount
++] = yytokenName (yytoken
); 
2125       if (!yypact_value_is_default (yyn
)) 
2127           /* Start YYX at -YYN if negative to avoid negative indexes in 
2128              YYCHECK.  In other words, skip the first -YYN actions for this 
2129              state because they are default actions.  */ 
2130           int yyxbegin 
= yyn 
< 0 ? -yyn 
: 0; 
2131           /* Stay within bounds of both yycheck and yytname.  */ 
2132           int yychecklim 
= YYLAST 
- yyn 
+ 1; 
2133           int yyxend 
= yychecklim 
< YYNTOKENS 
? yychecklim 
: YYNTOKENS
; 
2135           for (yyx 
= yyxbegin
; yyx 
< yyxend
; ++yyx
) 
2136             if (yycheck
[yyx 
+ yyn
] == yyx 
&& yyx 
!= YYTERROR
 
2137                 && !yytable_value_is_error (yytable
[yyx 
+ yyn
])) 
2139                 if (yycount 
== YYERROR_VERBOSE_ARGS_MAXIMUM
) 
2145                 yyarg
[yycount
++] = yytokenName (yyx
); 
2146                 yysize1 
= yysize 
+ yytnamerr (NULL
, yytokenName (yyx
)); 
2147                 yysize_overflow 
|= yysize1 
< yysize
; 
2155 #define YYCASE_(N, S)                   \ 
2159       YYCASE_(0, YY_("syntax error")); 
2160       YYCASE_(1, YY_("syntax error, unexpected %s")); 
2161       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); 
2162       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); 
2163       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); 
2164       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); 
2168   yysize1 
= yysize 
+ strlen (yyformat
); 
2169   yysize_overflow 
|= yysize1 
< yysize
; 
2172   if (!yysize_overflow
) 
2173     yymsg 
= (char *) YYMALLOC (yysize
); 
2179       while ((*yyp 
= *yyformat
)) 
2181           if (*yyp 
== '%' && yyformat
[1] == 's' && yyi 
< yycount
) 
2183               yyp 
+= yytnamerr (yyp
, yyarg
[yyi
++]); 
2192       yyerror (]b4_lyyerror_args
[yymsg
); 
2197       yyerror (]b4_lyyerror_args
[YY_("syntax error")); 
2198       yyMemoryExhausted (yystackp
); 
2200 #endif /* YYERROR_VERBOSE */ 
2204 /* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP, 
2205    yylval, and yylloc are the syntactic category, semantic value, and location 
2206    of the lookahead.  */ 
2207 /*ARGSUSED*/ static void 
2208 yyrecoverSyntaxError (yyGLRStack
* yystackp
]b4_user_formals
[) 
2213   if (yystackp
->yyerrState 
== 3) 
2214     /* We just shifted the error token and (perhaps) took some 
2215        reductions.  Skip tokens until we can proceed.  */ 
2216     while (YYID (yytrue
)) 
2219         if (yychar 
== YYEOF
) 
2220           yyFail (yystackp
][]b4_lpure_args
[, NULL
); 
2221         if (yychar 
!= YYEMPTY
) 
2222           {]b4_locations_if([[ 
2223             /* We throw away the lookahead, but the error range 
2224                of the shifted error token must take it into account.  */ 
2225             yyGLRState 
*yys 
= yystackp
->yytops
.yystates
[0]; 
2226             yyGLRStackItem yyerror_range
[3]; 
2227             yyerror_range
[1].yystate
.yyloc 
= yys
->yyloc
; 
2228             yyerror_range
[2].yystate
.yyloc 
= yylloc
; 
2229             YYLLOC_DEFAULT ((yys
->yyloc
), yyerror_range
, 2);]])[ 
2230             yytoken 
= YYTRANSLATE (yychar
); 
2231             yydestruct ("Error: discarding", 
2232                         yytoken
, &yylval
]b4_locations_if([, &yylloc
])[]b4_user_args
[); 
2234         YYDPRINTF ((stderr
, "Reading a token: ")); 
2236         if (yychar 
<= YYEOF
) 
2238             yychar 
= yytoken 
= YYEOF
; 
2239             YYDPRINTF ((stderr
, "Now at end of input.\n")); 
2243             yytoken 
= YYTRANSLATE (yychar
); 
2244             YY_SYMBOL_PRINT ("Next token is", yytoken
, &yylval
, &yylloc
); 
2246         yyj 
= yypact
[yystackp
->yytops
.yystates
[0]->yylrState
]; 
2247         if (yypact_value_is_default (yyj
)) 
2250         if (yyj 
< 0 || YYLAST 
< yyj 
|| yycheck
[yyj
] != yytoken
) 
2252             if (yydefact
[yystackp
->yytops
.yystates
[0]->yylrState
] != 0) 
2255         else if (! yytable_value_is_error (yytable
[yyj
])) 
2259   /* Reduce to one stack.  */ 
2260   for (yyk 
= 0; yyk 
< yystackp
->yytops
.yysize
; yyk 
+= 1) 
2261     if (yystackp
->yytops
.yystates
[yyk
] != NULL
) 
2263   if (yyk 
>= yystackp
->yytops
.yysize
) 
2264     yyFail (yystackp
][]b4_lpure_args
[, NULL
); 
2265   for (yyk 
+= 1; yyk 
< yystackp
->yytops
.yysize
; yyk 
+= 1) 
2266     yymarkStackDeleted (yystackp
, yyk
); 
2267   yyremoveDeletes (yystackp
); 
2268   yycompressStack (yystackp
); 
2270   /* Now pop stack until we find a state that shifts the error token.  */ 
2271   yystackp
->yyerrState 
= 3; 
2272   while (yystackp
->yytops
.yystates
[0] != NULL
) 
2274       yyGLRState 
*yys 
= yystackp
->yytops
.yystates
[0]; 
2275       yyj 
= yypact
[yys
->yylrState
]; 
2276       if (! yypact_value_is_default (yyj
)) 
2279           if (0 <= yyj 
&& yyj 
<= YYLAST 
&& yycheck
[yyj
] == YYTERROR
 
2280               && yyisShiftAction (yytable
[yyj
])) 
2282               /* Shift the error token having adjusted its location.  */ 
2283               YYLTYPE yyerrloc
;]b4_locations_if([[ 
2284               yystackp
->yyerror_range
[2].yystate
.yyloc 
= yylloc
; 
2285               YYLLOC_DEFAULT (yyerrloc
, (yystackp
->yyerror_range
), 2);]])[ 
2286               YY_SYMBOL_PRINT ("Shifting", yystos
[yytable
[yyj
]], 
2287                                &yylval
, &yyerrloc
); 
2288               yyglrShift (yystackp
, 0, yytable
[yyj
], 
2289                           yys
->yyposn
, &yylval
, &yyerrloc
); 
2290               yys 
= yystackp
->yytops
.yystates
[0]; 
2294 ]b4_locations_if([[      yystackp
->yyerror_range
[1].yystate
.yyloc 
= yys
->yyloc
;]])[ 
2295       if (yys
->yypred 
!= NULL
) 
2296         yydestroyGLRState ("Error: popping", yys
]b4_user_args
[); 
2297       yystackp
->yytops
.yystates
[0] = yys
->yypred
; 
2298       yystackp
->yynextFree 
-= 1; 
2299       yystackp
->yyspaceLeft 
+= 1; 
2301   if (yystackp
->yytops
.yystates
[0] == NULL
) 
2302     yyFail (yystackp
][]b4_lpure_args
[, NULL
); 
2305 #define YYCHK1(YYE)                                                          \ 
2315       goto yyuser_error;                                                     \ 
2325 ]b4_c_ansi_function_def([yyparse
], [int], b4_parse_param
)[ 
2329   yyGLRStack
* const yystackp 
= &yystack
; 
2332   YYDPRINTF ((stderr
, "Starting parse\n")); 
2335   yylval 
= yyval_default
; 
2337 #if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 
2338   yylloc
.first_line   
= yylloc
.last_line   
= ]b4_location_initial_line
[; 
2339   yylloc
.first_column 
= yylloc
.last_column 
= ]b4_location_initial_column
[; 
2342 m4_ifdef([b4_initial_action
], [ 
2343 m4_pushdef([b4_at_dollar
],     [yylloc
])dnl
 
2344 m4_pushdef([b4_dollar_dollar
], [yylval
])dnl
 
2345   /* User initialization code.  */ 
2346   b4_user_initial_action
 
2347 m4_popdef([b4_dollar_dollar
])dnl
 
2348 m4_popdef([b4_at_dollar
])])dnl
 
2350   if (! yyinitGLRStack (yystackp
, YYINITDEPTH
)) 
2351     goto yyexhaustedlab
; 
2352   switch (YYSETJMP (yystack
.yyexception_buffer
)) 
2355     case 1: goto yyabortlab
; 
2356     case 2: goto yyexhaustedlab
; 
2357     default: goto yybuglab
; 
2359   yyglrShift (&yystack
, 0, 0, 0, &yylval
, &yylloc
); 
2362   while (YYID (yytrue
)) 
2364       /* For efficiency, we have two loops, the first of which is 
2365          specialized to deterministic operation (single stack, no 
2366          potential ambiguity).  */ 
2368       while (YYID (yytrue
)) 
2372           const short int* yyconflicts
; 
2374           yyStateNum yystate 
= yystack
.yytops
.yystates
[0]->yylrState
; 
2375           YYDPRINTF ((stderr
, "Entering state %d\n", yystate
)); 
2376           if (yystate 
== YYFINAL
) 
2378           if (yyisDefaultedState (yystate
)) 
2380               yyrule 
= yydefaultAction (yystate
); 
2383 ]b4_locations_if([[               yystack
.yyerror_range
[1].yystate
.yyloc 
= yylloc
;]])[ 
2384                   yyreportSyntaxError (&yystack
]b4_user_args
[); 
2387               YYCHK1 (yyglrReduce (&yystack
, 0, yyrule
, yytrue
]b4_user_args
[)); 
2392               if (yychar 
== YYEMPTY
) 
2394                   YYDPRINTF ((stderr
, "Reading a token: ")); 
2398               if (yychar 
<= YYEOF
) 
2400                   yychar 
= yytoken 
= YYEOF
; 
2401                   YYDPRINTF ((stderr
, "Now at end of input.\n")); 
2405                   yytoken 
= YYTRANSLATE (yychar
); 
2406                   YY_SYMBOL_PRINT ("Next token is", yytoken
, &yylval
, &yylloc
); 
2409               yygetLRActions (yystate
, yytoken
, &yyaction
, &yyconflicts
); 
2410               if (*yyconflicts 
!= 0) 
2412               if (yyisShiftAction (yyaction
)) 
2414                   YY_SYMBOL_PRINT ("Shifting", yytoken
, &yylval
, &yylloc
); 
2417                   yyglrShift (&yystack
, 0, yyaction
, yyposn
, &yylval
, &yylloc
); 
2418                   if (0 < yystack
.yyerrState
) 
2419                     yystack
.yyerrState 
-= 1; 
2421               else if (yyisErrorAction (yyaction
)) 
2423 ]b4_locations_if([[               yystack
.yyerror_range
[1].yystate
.yyloc 
= yylloc
;]])[ 
2424                   yyreportSyntaxError (&yystack
]b4_user_args
[); 
2428                 YYCHK1 (yyglrReduce (&yystack
, 0, -yyaction
, yytrue
]b4_user_args
[)); 
2432       while (YYID (yytrue
)) 
2434           yySymbol yytoken_to_shift
; 
2437           for (yys 
= 0; yys 
< yystack
.yytops
.yysize
; yys 
+= 1) 
2438             yystackp
->yytops
.yylookaheadNeeds
[yys
] = yychar 
!= YYEMPTY
; 
2440           /* yyprocessOneStack returns one of three things: 
2442               - An error flag.  If the caller is yyprocessOneStack, it 
2443                 immediately returns as well.  When the caller is finally 
2444                 yyparse, it jumps to an error label via YYCHK1. 
2446               - yyok, but yyprocessOneStack has invoked yymarkStackDeleted 
2447                 (&yystack, yys), which sets the top state of yys to NULL.  Thus, 
2448                 yyparse's following invocation of yyremoveDeletes will remove 
2451               - yyok, when ready to shift a token. 
2453              Except in the first case, yyparse will invoke yyremoveDeletes and 
2454              then shift the next token onto all remaining stacks.  This 
2455              synchronization of the shift (that is, after all preceding 
2456              reductions on all stacks) helps prevent double destructor calls 
2457              on yylval in the event of memory exhaustion.  */ 
2459           for (yys 
= 0; yys 
< yystack
.yytops
.yysize
; yys 
+= 1) 
2460             YYCHK1 (yyprocessOneStack (&yystack
, yys
, yyposn
]b4_lpure_args
[)); 
2461           yyremoveDeletes (&yystack
); 
2462           if (yystack
.yytops
.yysize 
== 0) 
2464               yyundeleteLastStack (&yystack
); 
2465               if (yystack
.yytops
.yysize 
== 0) 
2466                 yyFail (&yystack
][]b4_lpure_args
[, YY_("syntax error")); 
2467               YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[)); 
2468               YYDPRINTF ((stderr
, "Returning to deterministic operation.\n")); 
2469 ]b4_locations_if([[           yystack
.yyerror_range
[1].yystate
.yyloc 
= yylloc
;]])[ 
2470               yyreportSyntaxError (&yystack
]b4_user_args
[); 
2474           /* If any yyglrShift call fails, it will fail after shifting.  Thus, 
2475              a copy of yylval will already be on stack 0 in the event of a 
2476              failure in the following loop.  Thus, yychar is set to YYEMPTY 
2477              before the loop to make sure the user destructor for yylval isn't 
2479           yytoken_to_shift 
= YYTRANSLATE (yychar
); 
2482           for (yys 
= 0; yys 
< yystack
.yytops
.yysize
; yys 
+= 1) 
2485               const short int* yyconflicts
; 
2486               yyStateNum yystate 
= yystack
.yytops
.yystates
[yys
]->yylrState
; 
2487               yygetLRActions (yystate
, yytoken_to_shift
, &yyaction
, 
2489               /* Note that yyconflicts were handled by yyprocessOneStack.  */ 
2490               YYDPRINTF ((stderr
, "On stack %lu, ", (unsigned long int) yys
)); 
2491               YY_SYMBOL_PRINT ("shifting", yytoken_to_shift
, &yylval
, &yylloc
); 
2492               yyglrShift (&yystack
, yys
, yyaction
, yyposn
, 
2494               YYDPRINTF ((stderr
, "Stack %lu now in state #%d\n", 
2495                           (unsigned long int) yys
, 
2496                           yystack
.yytops
.yystates
[yys
]->yylrState
)); 
2499           if (yystack
.yytops
.yysize 
== 1) 
2501               YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[)); 
2502               YYDPRINTF ((stderr
, "Returning to deterministic operation.\n")); 
2503               yycompressStack (&yystack
); 
2509       yyrecoverSyntaxError (&yystack
]b4_user_args
[); 
2510       yyposn 
= yystack
.yytops
.yystates
[0]->yyposn
; 
2526   yyerror (]b4_lyyerror_args
[YY_("memory exhausted")); 
2531   if (yychar 
!= YYEMPTY
) 
2532     yydestruct ("Cleanup: discarding lookahead", 
2533                 YYTRANSLATE (yychar
), 
2534                 &yylval
]b4_locations_if([, &yylloc
])[]b4_user_args
[); 
2536   /* If the stack is well-formed, pop the stack until it is empty, 
2537      destroying its entries as we go.  But free the stack regardless 
2538      of whether it is well-formed.  */ 
2539   if (yystack
.yyitems
) 
2541       yyGLRState
** yystates 
= yystack
.yytops
.yystates
; 
2544           size_t yysize 
= yystack
.yytops
.yysize
; 
2546           for (yyk 
= 0; yyk 
< yysize
; yyk 
+= 1) 
2549                 while (yystates
[yyk
]) 
2551                     yyGLRState 
*yys 
= yystates
[yyk
]; 
2552 ]b4_locations_if([[                 yystack
.yyerror_range
[1].yystate
.yyloc 
= yys
->yyloc
;]] 
2553 )[                  if (yys
->yypred 
!= NULL
) 
2554                       yydestroyGLRState ("Cleanup: popping", yys
]b4_user_args
[); 
2555                     yystates
[yyk
] = yys
->yypred
; 
2556                     yystack
.yynextFree 
-= 1; 
2557                     yystack
.yyspaceLeft 
+= 1; 
2562       yyfreeGLRStack (&yystack
); 
2565   /* Make sure YYID is used.  */ 
2566   return YYID (yyresult
); 
2569 /* DEBUGGING ONLY */ 
2571 static void yypstack (yyGLRStack
* yystackp
, size_t yyk
) 
2572   __attribute__ ((__unused__
)); 
2573 static void yypdumpstack (yyGLRStack
* yystackp
) __attribute__ ((__unused__
)); 
2576 yy_yypstack (yyGLRState
* yys
) 
2580       yy_yypstack (yys
->yypred
); 
2581       YYFPRINTF (stderr
, " -> "); 
2583   YYFPRINTF (stderr
, "%d@@%lu", yys
->yylrState
, 
2584              (unsigned long int) yys
->yyposn
); 
2588 yypstates (yyGLRState
* yyst
) 
2591     YYFPRINTF (stderr
, "<null>"); 
2594   YYFPRINTF (stderr
, "\n"); 
2598 yypstack (yyGLRStack
* yystackp
, size_t yyk
) 
2600   yypstates (yystackp
->yytops
.yystates
[yyk
]); 
2603 #define YYINDEX(YYX)                                                         \ 
2604     ((YYX) == NULL ? -1 : (yyGLRStackItem*) (YYX) - yystackp->yyitems) 
2608 yypdumpstack (yyGLRStack
* yystackp
) 
2610   yyGLRStackItem
* yyp
; 
2612   for (yyp 
= yystackp
->yyitems
; yyp 
< yystackp
->yynextFree
; yyp 
+= 1) 
2614       YYFPRINTF (stderr
, "%3lu. ", 
2615                  (unsigned long int) (yyp 
- yystackp
->yyitems
)); 
2616       if (*(yybool 
*) yyp
) 
2618           YYFPRINTF (stderr
, "Res: %d, LR State: %d, posn: %lu, pred: %ld", 
2619                      yyp
->yystate
.yyresolved
, yyp
->yystate
.yylrState
, 
2620                      (unsigned long int) yyp
->yystate
.yyposn
, 
2621                      (long int) YYINDEX (yyp
->yystate
.yypred
)); 
2622           if (! yyp
->yystate
.yyresolved
) 
2623             YYFPRINTF (stderr
, ", firstVal: %ld", 
2624                        (long int) YYINDEX (yyp
->yystate
 
2625                                              .yysemantics
.yyfirstVal
)); 
2629           YYFPRINTF (stderr
, "Option. rule: %d, state: %ld, next: %ld", 
2630                      yyp
->yyoption
.yyrule 
- 1, 
2631                      (long int) YYINDEX (yyp
->yyoption
.yystate
), 
2632                      (long int) YYINDEX (yyp
->yyoption
.yynext
)); 
2634       YYFPRINTF (stderr
, "\n"); 
2636   YYFPRINTF (stderr
, "Tops:"); 
2637   for (yyi 
= 0; yyi 
< yystackp
->yytops
.yysize
; yyi 
+= 1) 
2638     YYFPRINTF (stderr
, "%lu: %ld; ", (unsigned long int) yyi
, 
2639                (long int) YYINDEX (yystackp
->yytops
.yystates
[yyi
])); 
2640   YYFPRINTF (stderr
, "\n"); 
2645 dnl glr
.cc produces its own header
. 
2647 m4_if(b4_skeleton
, ["glr.c"], 
2649 [@
output(b4_spec_defines_file@
)@
 
2650 b4_copyright([Skeleton interface 
for Bison GLR parsers in C
], 
2653 b4_shared_declarations
 
2656 [[extern YYSTYPE 
]b4_prefix
[lval
;]]) 
2658 b4_locations_if([b4_pure_if([], 
2659 [extern YYLTYPE 
]b4_prefix
[lloc
;])