1 m4_divert(-1)                                                       -*- C 
-*- 
   3 # GLR skeleton for Bison 
   4 # Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 
   6 # This program is free software; you can redistribute it and/or modify 
   7 # it under the terms of the GNU General Public License as published by 
   8 # the Free Software Foundation; either version 2 of the License, or 
   9 # (at your option) any later version. 
  11 # This program is distributed in the hope that it will be useful, 
  12 # but WITHOUT ANY WARRANTY; without even the implied warranty of 
  13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  14 # GNU General Public License for more details. 
  16 # You should have received a copy of the GNU General Public License 
  17 # along with this program; if not, write to the Free Software 
  18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 
  22 m4_include(b4_pkgdatadir
/[c
.m4
]) 
  24 ## ---------------- ## 
  26 ## ---------------- ## 
  29 m4_define_default([b4_stack_depth_max
], [10000]) 
  30 m4_define_default([b4_stack_depth_init
],  [200]) 
  34 ## ------------------------ ## 
  35 ## Pure/impure interfaces.  ## 
  36 ## ------------------------ ## 
  41 # The possible parse-params formal arguments preceded by a comma. 
  43 # This is not shared with yacc.c in c.m4 because  GLR relies on ISO C 
  44 # formal argument declarations. 
  45 m4_define([b4_user_formals
], 
  46 [m4_ifset([b4_parse_param
], [, b4_c_ansi_formals(b4_parse_param
)])]) 
  51 # Accumule in b4_lex_param all the yylex arguments. 
  52 # Yes, this is quite ugly... 
  53 m4_define([b4_lex_param
], 
  54 m4_dquote(b4_pure_if([[[[YYSTYPE 
*]], [[&yylval
]]][]dnl
 
  55 b4_location_if([, [[YYLTYPE 
*], [&yylloc
]]])])dnl
 
  56 m4_ifdef([b4_lex_param
], [, ]b4_lex_param
))) 
  61 # Optional effective arguments passed to yyerror: user args plus yylloc, and 
  63 m4_define([b4_yyerror_args
], 
  64 [b4_pure_if([b4_location_if([yylocp
, ])])dnl
 
  65 m4_ifset([b4_parse_param
], [b4_c_args(b4_parse_param
), ])]) 
  70 # Same as above, but on the look-ahead, hence &yylloc instead of yylocp. 
  71 m4_define([b4_lyyerror_args
], 
  72 [b4_pure_if([b4_location_if([&yylloc
, ])])dnl
 
  73 m4_ifset([b4_parse_param
], [b4_c_args(b4_parse_param
), ])]) 
  78 # Same as b4_yyerror_args, but with a leading comma. 
  79 m4_define([b4_pure_args
], 
  80 [b4_pure_if([b4_location_if([, yylocp
])])[]b4_user_args
]) 
  85 # Same as above, but on the look-ahead, hence &yylloc instead of yylocp. 
  86 m4_define([b4_lpure_args
], 
  87 [b4_pure_if([b4_location_if([, &yylloc
])])[]b4_user_args
]) 
  92 # Arguments passed to yyerror: user formals plus yylocp. 
  93 m4_define([b4_pure_formals
], 
  94 [b4_pure_if([b4_location_if([, YYLTYPE 
*yylocp
])])[]b4_user_formals
]) 
  97 ## ----------------- ## 
  98 ## Semantic Values.  ## 
  99 ## ----------------- ## 
 102 # b4_lhs_value([TYPE]) 
 103 # -------------------- 
 104 # Expansion of $<TYPE>$. 
 105 m4_define([b4_lhs_value
], 
 106 [((*yyvalp
)[]m4_ifval([$
1], [.$
1]))]) 
 109 # b4_rhs_value(RULE-LENGTH, NUM, [TYPE]) 
 110 # -------------------------------------- 
 111 # Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH 
 113 m4_define([b4_rhs_value
], 
 114 [(((yyGLRStackItem 
const *)yyvsp
)@
{YYFILL (($
2) - ($
1))@
}.yystate
.yysemantics
.yysval
[]m4_ifval([$
3], [.$
3]))]) 
 125 m4_define([b4_lhs_location
], 
 129 # b4_rhs_location(RULE-LENGTH, NUM) 
 130 # --------------------------------- 
 131 # Expansion of @NUM, where the current rule has RULE-LENGTH symbols 
 133 m4_define([b4_rhs_location
], 
 134 [(((yyGLRStackItem 
const *)yyvsp
)@
{YYFILL (($
2) - ($
1))@
}.yystate
.yyloc
)]) 
 142 # We do want M4 expansion after # for CPP macros. 
 145 @output @output_parser_name@
 
 146 b4_copyright([Skeleton parser 
for GLR parsing with Bison
], 
 147   [2002, 2003, 2004, 2005, 2006]) 
 149 /* This is the parser code for GLR (Generalized LR) parser.  */ 
 153 m4_if(b4_prefix
[], [yy
], [], 
 154 [/* Substitute the variable and function names.  */ 
 155 #define yyparse b4_prefix[]parse 
 156 #define yylex   b4_prefix[]lex 
 157 #define yyerror b4_prefix[]error 
 158 #define yylval  b4_prefix[]lval 
 159 #define yychar  b4_prefix[]char 
 160 #define yydebug b4_prefix[]debug 
 161 #define yynerrs b4_prefix[]nerrs 
 162 #define yylloc  b4_prefix[]lloc]) 
 164 dnl 
# b4_shared_declarations 
 165 dnl 
# ---------------------- 
 166 dnl 
# Declaration that might either go into the header (if --defines) 
 167 dnl 
# or open coded in the parser body. 
 168 m4_define([b4_shared_declarations
], 
 169 [b4_token_enums(b4_tokens
)[ 
 171 /* Copy the first part of user declarations.  */ 
 174 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) 
 175 ]m4_ifdef([b4_stype
], 
 176 [typedef union m4_bregexp(b4_stype
, [^{], [YYSTYPE 
]) 
 178 /* Line __line__ of glr.c.  */ 
 179 b4_syncline([@oline@
], [@ofile@
]) 
 181 [typedef int YYSTYPE
;])[ 
 182 # define YYSTYPE_IS_DECLARED 1 
 183 # define YYSTYPE_IS_TRIVIAL 1 
 186 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED) 
 187 typedef struct YYLTYPE
 
 198 # define YYLTYPE_IS_DECLARED 1 
 199 # define YYLTYPE_IS_TRIVIAL 1 
 203 m4_if(b4_defines_flag
, 0, 
 204       [b4_shared_declarations
], 
 205       [#include @output_header_name@])[ 
 207 /* Enabling traces.  */ 
 209 # define YYDEBUG ]b4_debug[ 
 212 /* Enabling verbose error messages.  */ 
 213 #ifdef YYERROR_VERBOSE 
 214 # undef YYERROR_VERBOSE 
 215 # define YYERROR_VERBOSE 1 
 217 # define YYERROR_VERBOSE ]b4_error_verbose[ 
 220 /* Enabling the token table.  */ 
 221 #ifndef YYTOKEN_TABLE 
 222 # define YYTOKEN_TABLE ]b4_token_table[ 
 225 /* Default (constant) value used for initialization for null 
 226    right-hand sides.  Unlike the standard yacc.c template, 
 227    here we set the default value of $$ to a zeroed-out value. 
 228    Since the default value is undefined, this behavior is 
 229    technically correct.  */ 
 230 static YYSTYPE yyval_default
; 
 232 /* Copy the second part of user declarations.  */ 
 235 ]/* Line __line__ of glr.c.  */ 
 236 b4_syncline([@oline@
], [@ofile@
]) 
 246 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 
 247 #   define YY_(msgid) dgettext ("bison-runtime", msgid) 
 251 #  define YY_(msgid) msgid 
 255 /* Suppress unused-variable warnings by "using" E.  */ 
 257 # define YYUSE(e) ((void) (e)) 
 259 # define YYUSE(e) /* empty */ 
 262 /* Identity function, used to suppress warnings about constant conditions.  */ 
 266 ]b4_c_function_def([YYID
], [static int], [[int i
], [i
]])[ 
 276 # define YYMALLOC malloc 
 279 # define YYREALLOC realloc 
 282 #define YYSIZEMAX ((size_t) -1) 
 287    typedef unsigned char yybool
; 
 294 # define YYJMP_BUF jmp_buf 
 295 # define YYSETJMP(env) setjmp (env) 
 296 # define YYLONGJMP(env, val) longjmp (env, val) 
 303 #ifndef __attribute__ 
 304 /* This feature is available in gcc versions 2.5 and later.  */ 
 305 # if (!defined (__GNUC__) || __GNUC__ < 2 \ 
 306       || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__) 
 307 #  define __attribute__(Spec) /* empty */ 
 311 ]b4_location_if([#define YYOPTIONAL_LOC(Name) Name],[ 
 313 # define YYOPTIONAL_LOC(Name) /* empty */ 
 315 # define YYOPTIONAL_LOC(Name) Name __attribute__ ((__unused__)) 
 319 # define YYASSERT(condition) ((void) ((condition) || (abort (), 0))) 
 322 /* YYFINAL -- State number of the termination state.  */ 
 323 #define YYFINAL  ]b4_final_state_number[ 
 324 /* YYLAST -- Last index in YYTABLE.  */ 
 325 #define YYLAST   ]b4_last[ 
 327 /* YYNTOKENS -- Number of terminals.  */ 
 328 #define YYNTOKENS  ]b4_tokens_number[ 
 329 /* YYNNTS -- Number of nonterminals.  */ 
 330 #define YYNNTS  ]b4_nterms_number[ 
 331 /* YYNRULES -- Number of rules.  */ 
 332 #define YYNRULES  ]b4_rules_number[ 
 333 /* YYNRULES -- Number of states.  */ 
 334 #define YYNSTATES  ]b4_states_number[ 
 335 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule.  */ 
 336 #define YYMAXRHS ]b4_r2_max[ 
 337 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle 
 338    accessed by $0, $-1, etc., in any rule.  */ 
 339 #define YYMAXLEFT ]b4_max_left_semantic_context[ 
 341 /* YYTRANSLATE(X) -- Bison symbol number corresponding to X.  */ 
 342 #define YYUNDEFTOK  ]b4_undef_token_number[ 
 343 #define YYMAXUTOK   ]b4_user_token_number_max[ 
 345 #define YYTRANSLATE(YYX)                                                \ 
 346   ((YYX <= 0) ? YYEOF :                                                 \ 
 347    (unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 
 349 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */ 
 350 static const ]b4_int_type_for([b4_translate
])[ yytranslate
[] = 
 356 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 
 358 static const ]b4_int_type_for([b4_prhs
])[ yyprhs
[] = 
 363 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */ 
 364 static const ]b4_int_type_for([b4_rhs
])[ yyrhs
[] = 
 369 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */ 
 370 static const ]b4_int_type_for([b4_rline
])[ yyrline
[] = 
 376 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 
 377 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 
 378    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */ 
 379 static const char *const yytname
[] = 
 385 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */ 
 386 static const ]b4_int_type_for([b4_r1
])[ yyr1
[] = 
 391 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */ 
 392 static const ]b4_int_type_for([b4_r2
])[ yyr2
[] = 
 397 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none).  */ 
 398 static const ]b4_int_type_for([b4_dprec
])[ yydprec
[] = 
 403 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM.  */ 
 404 static const ]b4_int_type_for([b4_merger
])[ yymerger
[] = 
 409 /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE 
 410    doesn't specify something else to do.  Zero means the default is an 
 412 static const ]b4_int_type_for([b4_defact
])[ yydefact
[] = 
 417 /* YYPDEFGOTO[NTERM-NUM].  */ 
 418 static const ]b4_int_type_for([b4_defgoto
])[ yydefgoto
[] = 
 423 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 
 425 #define YYPACT_NINF ]b4_pact_ninf[ 
 426 static const ]b4_int_type_for([b4_pact
])[ yypact
[] = 
 431 /* YYPGOTO[NTERM-NUM].  */ 
 432 static const ]b4_int_type_for([b4_pgoto
])[ yypgoto
[] = 
 437 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If 
 438    positive, shift that token.  If negative, reduce the rule which 
 439    number is the opposite.  If zero, do what YYDEFACT says. 
 440    If YYTABLE_NINF, syntax error.  */ 
 441 #define YYTABLE_NINF ]b4_table_ninf[ 
 442 static const ]b4_int_type_for([b4_table
])[ yytable
[] = 
 447 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of 
 448    list of conflicting reductions corresponding to action entry for 
 449    state STATE-NUM in yytable.  0 means no conflicts.  The list in 
 450    yyconfl is terminated by a rule number of 0.  */ 
 451 static const ]b4_int_type_for([b4_conflict_list_heads
])[ yyconflp
[] = 
 453   ]b4_conflict_list_heads
[ 
 456 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by 
 457    0, pointed into by YYCONFLP.  */ 
 458 ]dnl Do 
not use b4_int_type_for here
, since there are places where
 
 459 dnl pointers onto yyconfl are taken
, which type is 
"short int *". 
 460 dnl We probably ought to introduce a type 
for confl
. 
 461 [static const short int yyconfl
[] = 
 463   ]b4_conflicting_rules
[ 
 466 static const ]b4_int_type_for([b4_check
])[ yycheck
[] = 
 471 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 
 472    symbol of state STATE-NUM.  */ 
 473 static const ]b4_int_type_for([b4_stos
])[ yystos
[] = 
 479 /* Prevent warning if -Wmissing-prototypes.  */ 
 480 ]b4_c_ansi_function_decl([yyparse
], [int], b4_parse_param
)[ 
 482 /* Error token number */ 
 485 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 
 486    If N is 0, then set CURRENT to the empty location which ends 
 487    the previous symbol: RHS[0] (always defined).  */ 
 490 #define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc) 
 491 #ifndef YYLLOC_DEFAULT 
 492 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \ 
 496           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \ 
 497           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \ 
 498           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \ 
 499           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \ 
 503           (Current).first_line   = (Current).last_line   =              \ 
 504             YYRHSLOC (Rhs, 0).last_line;                                \ 
 505           (Current).first_column = (Current).last_column =              \ 
 506             YYRHSLOC (Rhs, 0).last_column;                              \ 
 510 /* YY_LOCATION_PRINT -- Print the location on the stream. 
 511    This macro was not mandated originally: define only if we know 
 512    we won't break user code: when these are the locations we know.  */ 
 514 # define YY_LOCATION_PRINT(File, Loc)                   \ 
 515     fprintf (File, "%d.%d-%d.%d",                       \ 
 516              (Loc).first_line, (Loc).first_column,      \ 
 517              (Loc).last_line,  (Loc).last_column) 
 520 #ifndef YYLLOC_DEFAULT 
 521 # define YYLLOC_DEFAULT(Current, Rhs, N) ((void) 0) 
 525 #ifndef YY_LOCATION_PRINT 
 526 # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 
 530 /* YYLEX -- calling `yylex' with the right arguments.  */ 
 531 #define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[ 
 536 #define yynerrs (yystackp->yyerrcnt) 
 538 #define yychar (yystackp->yyrawchar) 
 540 #define yylval (yystackp->yyval) 
 542 #define yylloc (yystackp->yyloc) 
 543 m4_if(b4_prefix
[], [yy
], [], 
 544 [#define b4_prefix[]nerrs yynerrs 
 545 #define b4_prefix[]char yychar 
 546 #define b4_prefix[]lval yylval 
 547 #define b4_prefix[]lloc yylloc])], 
 555 static const int YYEOF 
= 0; 
 556 static const int YYEMPTY 
= -2; 
 558 typedef enum { yyok
, yyaccept
, yyabort
, yyerr 
} YYRESULTTAG
; 
 561    do { YYRESULTTAG yyflag = YYE; if (yyflag != yyok) return yyflag; }       \ 
 566 #if ! defined (YYFPRINTF) 
 567 #  define YYFPRINTF fprintf 
 570 # define YYDPRINTF(Args)                        \ 
 576 ]b4_yy_symbol_print_generate([b4_c_ansi_function_def
])[ 
 578 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                      \ 
 582       YYFPRINTF (stderr, "%s ", Title);                                     \ 
 583       yy_symbol_print (stderr, Type,                                        \ 
 584                        Value]b4_location_if([, Location])[]b4_user_args[);  \ 
 585       YYFPRINTF (stderr, "\n");                                             \ 
 589 /* Nonzero means print parse trace.  It is left uninitialized so that 
 590    multiple parsers can coexist.  */ 
 595 # define YYDPRINTF(Args) 
 596 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) 
 598 #endif /* !YYDEBUG */ 
 600 /* YYINITDEPTH -- initial size of the parser's stacks.  */ 
 602 # define YYINITDEPTH ]b4_stack_depth_init[ 
 605 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 
 606    if the built-in stack extension method is used). 
 608    Do not make this value too large; the results are undefined if 
 609    SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem) 
 610    evaluated with infinite-precision integer arithmetic.  */ 
 613 # define YYMAXDEPTH ]b4_stack_depth_max[ 
 616 /* Minimum number of free items on the stack allowed after an 
 617    allocation.  This is to allow allocation and initialization 
 618    to be completed by functions that call yyexpandGLRStack before the 
 619    stack is expanded, thus insuring that all necessary pointers get 
 620    properly redirected to new data.  */ 
 623 #ifndef YYSTACKEXPANDABLE 
 624 # if (! defined (__cplusplus) \ 
 625       || (]b4_location_if([[defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \ 
 626           && ]])[defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)) 
 627 #  define YYSTACKEXPANDABLE 1 
 629 #  define YYSTACKEXPANDABLE 0 
 633 #if YYSTACKEXPANDABLE 
 634 # define YY_RESERVE_GLRSTACK(Yystack)                   \ 
 636     if (Yystack->yyspaceLeft < YYHEADROOM)              \ 
 637       yyexpandGLRStack (Yystack);                       \ 
 640 # define YY_RESERVE_GLRSTACK(Yystack)                   \ 
 642     if (Yystack->yyspaceLeft < YYHEADROOM)              \ 
 643       yyMemoryExhausted (Yystack);                      \ 
 651 #  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) 
 652 #   define yystpcpy stpcpy 
 654 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 
 657 yystpcpy (char *yydest
, const char *yysrc
) 
 660   const char *yys 
= yysrc
; 
 662   while ((*yyd
++ = *yys
++) != '\0') 
 671 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary 
 672    quotes and backslashes, so that it's suitable for yyerror.  The 
 673    heuristic is that double-quoting is unnecessary unless the string 
 674    contains an apostrophe, a comma, or backslash (other than 
 675    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is 
 676    null, do not copy; instead, return the length of what the result 
 679 yytnamerr (char *yyres
, const char *yystr
) 
 684       char const *yyp 
= yystr
; 
 691             goto do_not_strip_quotes
; 
 695               goto do_not_strip_quotes
; 
 708     do_not_strip_quotes
: ; 
 712     return strlen (yystr
); 
 714   return yystpcpy (yyres
, yystr
) - yyres
; 
 718 #endif /* !YYERROR_VERBOSE */ 
 720 /** State numbers, as in LALR(1) machine */ 
 721 typedef int yyStateNum
; 
 723 /** Rule numbers, as in LALR(1) machine */ 
 724 typedef int yyRuleNum
; 
 726 /** Grammar symbol */ 
 727 typedef short int yySymbol
; 
 729 /** Item references, as in LALR(1) machine */ 
 730 typedef short int yyItemNum
; 
 732 typedef struct yyGLRState yyGLRState
; 
 733 typedef struct yyGLRStateSet yyGLRStateSet
; 
 734 typedef struct yySemanticOption yySemanticOption
; 
 735 typedef union yyGLRStackItem yyGLRStackItem
; 
 736 typedef struct yyGLRStack yyGLRStack
; 
 739   /** Type tag: always true.  */ 
 741   /** Type tag for yysemantics.  If true, yysval applies, otherwise 
 742    *  yyfirstVal applies.  */ 
 744   /** Number of corresponding LALR(1) machine state.  */ 
 745   yyStateNum yylrState
; 
 746   /** Preceding state in this stack */ 
 748   /** Source position of the first token produced by my symbol */ 
 751     /** First in a chain of alternative reductions producing the 
 752      *  non-terminal corresponding to this state, threaded through 
 754     yySemanticOption
* yyfirstVal
; 
 755     /** Semantic value for this state.  */ 
 758   /** Source location for this state.  */ 
 762 struct yyGLRStateSet 
{ 
 763   yyGLRState
** yystates
; 
 764   /** During nondeterministic operation, yylookaheadStatuses tracks which 
 765    *  stacks have actually needed the current lookahead.  During deterministic 
 766    *  operation, yylookaheadStatuses[0] is not maintained since it would merely 
 767    *  duplicate yychar != YYEMPTY.  */ 
 768   yybool
* yylookaheadStatuses
; 
 769   size_t yysize
, yycapacity
; 
 772 struct yySemanticOption 
{ 
 773   /** Type tag: always false.  */ 
 775   /** Rule number for this reduction */ 
 777   /** The last RHS state in the list of states to be reduced.  */ 
 779   /** The lookahead for this reduction.  */ 
 783   /** Next sibling in chain of options.  To facilitate merging, 
 784    *  options are chained in decreasing order by address.  */ 
 785   yySemanticOption
* yynext
; 
 788 /** Type of the items in the GLR stack.  The yyisState field 
 789  *  indicates which item of the union is valid.  */ 
 790 union yyGLRStackItem 
{ 
 792   yySemanticOption yyoption
; 
 797 ]b4_location_if([[  /* To compute the location of the error token.  */ 
 798   yyGLRStackItem yyerror_range
[3];]])[ 
 807   YYJMP_BUF yyexception_buffer
; 
 808   yyGLRStackItem
* yyitems
; 
 809   yyGLRStackItem
* yynextFree
; 
 811   yyGLRState
* yysplitPoint
; 
 812   yyGLRState
* yylastDeleted
; 
 813   yyGLRStateSet yytops
; 
 816 #if YYSTACKEXPANDABLE 
 817 static void yyexpandGLRStack (yyGLRStack
* yystackp
); 
 820 static void yyFail (yyGLRStack
* yystackp
]b4_pure_formals
[, const char* yymsg
) 
 821   __attribute__ ((__noreturn__
)); 
 823 yyFail (yyGLRStack
* yystackp
]b4_pure_formals
[, const char* yymsg
) 
 826     yyerror (]b4_yyerror_args
[yymsg
); 
 827   YYLONGJMP (yystackp
->yyexception_buffer
, 1); 
 830 static void yyMemoryExhausted (yyGLRStack
* yystackp
) 
 831   __attribute__ ((__noreturn__
)); 
 833 yyMemoryExhausted (yyGLRStack
* yystackp
) 
 835   YYLONGJMP (yystackp
->yyexception_buffer
, 2); 
 838 #if YYDEBUG || YYERROR_VERBOSE 
 839 /** A printable representation of TOKEN.  */ 
 840 static inline const char* 
 841 yytokenName (yySymbol yytoken
) 
 843   if (yytoken 
== YYEMPTY
) 
 846   return yytname
[yytoken
]; 
 850 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting 
 851  *  at YYVSP[YYLOW0].yystate.yypred.  Leaves YYVSP[YYLOW1].yystate.yypred 
 852  *  containing the pointer to the next state in the chain.  */ 
 853 static void yyfillin (yyGLRStackItem 
*, int, int) __attribute__ ((__unused__
)); 
 855 yyfillin (yyGLRStackItem 
*yyvsp
, int yylow0
, int yylow1
) 
 859   s 
= yyvsp
[yylow0
].yystate
.yypred
; 
 860   for (i 
= yylow0
-1; i 
>= yylow1
; i 
-= 1) 
 862       YYASSERT (s
->yyresolved
); 
 863       yyvsp
[i
].yystate
.yyresolved 
= yytrue
; 
 864       yyvsp
[i
].yystate
.yysemantics
.yysval 
= s
->yysemantics
.yysval
; 
 865       yyvsp
[i
].yystate
.yyloc 
= s
->yyloc
; 
 866       s 
= yyvsp
[i
].yystate
.yypred 
= s
->yypred
; 
 870 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1.  Otherwise, fill in 
 871  * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1. 
 872  * For convenience, always return YYLOW1.  */ 
 873 static inline int yyfill (yyGLRStackItem 
*, int *, int, yybool
) 
 874      __attribute__ ((__unused__
)); 
 876 yyfill (yyGLRStackItem 
*yyvsp
, int *yylow
, int yylow1
, yybool yynormal
) 
 878   if (!yynormal 
&& yylow1 
< *yylow
) 
 880       yyfillin (yyvsp
, *yylow
, yylow1
); 
 886 /** Perform user action for rule number YYN, with RHS length YYRHSLEN, 
 887  *  and top stack item YYVSP.  YYLVALP points to place to put semantic 
 888  *  value ($$), and yylocp points to place for location information 
 889  *  (@@$).  Returns yyok for normal return, yyaccept for YYACCEPT, 
 890  *  yyerr for YYERROR, yyabort for YYABORT.  */ 
 891 /*ARGSUSED*/ static YYRESULTTAG
 
 892 yyuserAction (yyRuleNum yyn
, int yyrhslen
, yyGLRStackItem
* yyvsp
, 
 894               YYLTYPE
* YYOPTIONAL_LOC (yylocp
), 
 898   yybool yynormal 
__attribute__ ((__unused__
)) = 
 899     (yystackp
->yysplitPoint 
== NULL
); 
 901 ]b4_parse_param_use
[]dnl
 
 903 # define yyerrok (yystackp->yyerrState = 0) 
 905 # define YYACCEPT return yyaccept 
 907 # define YYABORT return yyabort 
 909 # define YYERROR return yyerrok, yyerr 
 911 # define YYRECOVERING (yystackp->yyerrState != 0) 
 913 # define yyclearin (yychar = *(yystackp->yytokenp) = YYEMPTY) 
 915 # define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal) 
 917 # define YYBACKUP(Token, Value)                                              \ 
 918   return yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")),     \ 
 923     *yyvalp 
= yyval_default
; 
 925     *yyvalp 
= yyvsp
[YYFILL (1-yyrhslen
)].yystate
.yysemantics
.yysval
; 
 926   YYLLOC_DEFAULT (*yylocp
, yyvsp 
- yyrhslen
, yyrhslen
); 
 927 ]b4_location_if([[  yystackp
->yyerror_range
[1].yystate
.yyloc 
= *yylocp
; 
 932 /* Line __line__ of glr.c.  */ 
 933 b4_syncline([@oline@
], [@ofile@
])[ 
 948 /*ARGSUSED*/ static void 
 949 yyuserMerge (int yyn
, YYSTYPE
* yy0
, YYSTYPE
* yy1
) 
 961                               /* Bison grammar-table manipulation.  */ 
 963 ]b4_yydestruct_generate([b4_c_ansi_function_def
])[ 
 965 /** Number of symbols composing the right hand side of rule #RULE.  */ 
 967 yyrhsLength (yyRuleNum yyrule
) 
 973 yydestroyGLRState (char const *yymsg
, yyGLRState 
*yys
]b4_user_formals
[) 
 976     yydestruct (yymsg
, yystos
[yys
->yylrState
], 
 977                 &yys
->yysemantics
.yysval
]b4_location_if([, &yys
->yyloc
])[]b4_user_args
[); 
 983           YYFPRINTF (stderr
, "%s unresolved ", yymsg
); 
 984           yy_symbol_print (stderr
, yystos
[yys
->yylrState
], 
 985                            NULL
]b4_location_if([, &yys
->yyloc
])[]b4_user_args
[); 
 986           YYFPRINTF (stderr
, "\n"); 
 990       if (yys
->yysemantics
.yyfirstVal
) 
 992           yySemanticOption 
*yyoption 
= yys
->yysemantics
.yyfirstVal
; 
 995           for (yyrh 
= yyoption
->yystate
, yyn 
= yyrhsLength (yyoption
->yyrule
); 
 997                yyrh 
= yyrh
->yypred
, yyn 
-= 1) 
 998             yydestroyGLRState (yymsg
, yyrh
]b4_user_args
[); 
1003 /** Left-hand-side symbol for rule #RULE.  */ 
1004 static inline yySymbol
 
1005 yylhsNonterm (yyRuleNum yyrule
) 
1007   return yyr1
[yyrule
]; 
1010 #define yyis_pact_ninf(yystate) \ 
1011   ]m4_if(m4_eval(b4_pact_ninf < b4_pact_min), [1], 
1013          [((yystate
) == YYPACT_NINF
)])[ 
1015 /** True iff LR state STATE has only a default reduction (regardless 
1017 static inline yybool
 
1018 yyisDefaultedState (yyStateNum yystate
) 
1020   return yyis_pact_ninf (yypact
[yystate
]); 
1023 /** The default reduction for STATE, assuming it has one.  */ 
1024 static inline yyRuleNum
 
1025 yydefaultAction (yyStateNum yystate
) 
1027   return yydefact
[yystate
]; 
1030 #define yyis_table_ninf(yytable_value) \ 
1031   ]m4_if(m4_eval(b4_table_ninf < b4_table_min), [1], 
1033          [((yytable_value
) == YYTABLE_NINF
)])[ 
1035 /** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN. 
1037  *    R < 0:  Reduce on rule -R. 
1039  *    R > 0:  Shift to state R. 
1040  *  Set *CONFLICTS to a pointer into yyconfl to 0-terminated list of 
1041  *  conflicting reductions. 
1044 yygetLRActions (yyStateNum yystate
, int yytoken
, 
1045                 int* yyaction
, const short int** yyconflicts
) 
1047   int yyindex 
= yypact
[yystate
] + yytoken
; 
1048   if (yyindex 
< 0 || YYLAST 
< yyindex 
|| yycheck
[yyindex
] != yytoken
) 
1050       *yyaction 
= -yydefact
[yystate
]; 
1051       *yyconflicts 
= yyconfl
; 
1053   else if (! yyis_table_ninf (yytable
[yyindex
])) 
1055       *yyaction 
= yytable
[yyindex
]; 
1056       *yyconflicts 
= yyconfl 
+ yyconflp
[yyindex
]; 
1061       *yyconflicts 
= yyconfl 
+ yyconflp
[yyindex
]; 
1065 static inline yyStateNum
 
1066 yyLRgotoState (yyStateNum yystate
, yySymbol yylhs
) 
1069   yyr 
= yypgoto
[yylhs 
- YYNTOKENS
] + yystate
; 
1070   if (0 <= yyr 
&& yyr 
<= YYLAST 
&& yycheck
[yyr
] == yystate
) 
1071     return yytable
[yyr
]; 
1073     return yydefgoto
[yylhs 
- YYNTOKENS
]; 
1076 static inline yybool
 
1077 yyisShiftAction (int yyaction
) 
1079   return 0 < yyaction
; 
1082 static inline yybool
 
1083 yyisErrorAction (int yyaction
) 
1085   return yyaction 
== 0; 
1090 /** Return a fresh GLRStackItem.  Callers should call 
1091  * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient 
1094 static inline yyGLRStackItem
* 
1095 yynewGLRStackItem (yyGLRStack
* yystackp
, yybool yyisState
) 
1097   yyGLRStackItem
* yynewItem 
= yystackp
->yynextFree
; 
1098   yystackp
->yyspaceLeft 
-= 1; 
1099   yystackp
->yynextFree 
+= 1; 
1100   yynewItem
->yystate
.yyisState 
= yyisState
; 
1104 /** Add a new semantic action that will execute the action for rule 
1105  *  RULENUM on the semantic values in RHS to the list of 
1106  *  alternative actions for STATE.  Assumes that RHS comes from  
1107  *  stack #K of *STACKP. */ 
1109 yyaddDeferredAction (yyGLRStack
* yystackp
, size_t yyk
, yyGLRState
* yystate
, 
1110                      yyGLRState
* rhs
, yyRuleNum yyrule
) 
1112   yySemanticOption
* yynewOption 
= 
1113     &yynewGLRStackItem (yystackp
, yyfalse
)->yyoption
; 
1114   yynewOption
->yystate 
= rhs
; 
1115   yynewOption
->yyrule 
= yyrule
; 
1116   if (yystackp
->yytops
.yylookaheadStatuses
[yyk
]) 
1118       yynewOption
->yyrawchar 
= yychar
; 
1119       yynewOption
->yyval 
= yylval
; 
1120       yynewOption
->yyloc 
= yylloc
; 
1123     yynewOption
->yyrawchar 
= YYEMPTY
; 
1124   yynewOption
->yynext 
= yystate
->yysemantics
.yyfirstVal
; 
1125   yystate
->yysemantics
.yyfirstVal 
= yynewOption
; 
1127   YY_RESERVE_GLRSTACK (yystackp
); 
1132 /** Initialize SET to a singleton set containing an empty stack.  */ 
1134 yyinitStateSet (yyGLRStateSet
* yyset
) 
1137   yyset
->yycapacity 
= 16; 
1138   yyset
->yystates 
= (yyGLRState
**) YYMALLOC (16 * sizeof yyset
->yystates
[0]); 
1139   if (! yyset
->yystates
) 
1141   yyset
->yystates
[0] = NULL
; 
1142   yyset
->yylookaheadStatuses 
= 
1143     (yybool
*) YYMALLOC (16 * sizeof yyset
->yylookaheadStatuses
[0]); 
1144   if (! yyset
->yylookaheadStatuses
) 
1146       YYFREE (yyset
->yystates
); 
1152 static void yyfreeStateSet (yyGLRStateSet
* yyset
) 
1154   YYFREE (yyset
->yystates
); 
1155   YYFREE (yyset
->yylookaheadStatuses
); 
1158 /** Initialize STACK to a single empty stack, with total maximum 
1159  *  capacity for all stacks of SIZE.  */ 
1161 yyinitGLRStack (yyGLRStack
* yystackp
, size_t yysize
) 
1163   yystackp
->yyerrState 
= 0; 
1165   yystackp
->yyspaceLeft 
= yysize
; 
1167     (yyGLRStackItem
*) YYMALLOC (yysize 
* sizeof yystackp
->yynextFree
[0]); 
1168   if (!yystackp
->yyitems
) 
1170   yystackp
->yynextFree 
= yystackp
->yyitems
; 
1171   yystackp
->yysplitPoint 
= NULL
; 
1172   yystackp
->yylastDeleted 
= NULL
; 
1173   return yyinitStateSet (&yystackp
->yytops
); 
1177 #if YYSTACKEXPANDABLE 
1178 # define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \ 
1179   &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE 
1181 /** If STACK is expandable, extend it.  WARNING: Pointers into the 
1182     stack from outside should be considered invalid after this call. 
1183     We always expand when there are 1 or fewer items left AFTER an 
1184     allocation, so that we can avoid having external pointers exist 
1185     across an allocation.  */ 
1187 yyexpandGLRStack (yyGLRStack
* yystackp
) 
1189   yyGLRStackItem
* yynewItems
; 
1190   yyGLRStackItem
* yyp0
, *yyp1
; 
1191   size_t yysize
, yynewSize
; 
1193   yysize 
= yystackp
->yynextFree 
- yystackp
->yyitems
; 
1194   if (YYMAXDEPTH 
<= yysize
) 
1195     yyMemoryExhausted (yystackp
); 
1196   yynewSize 
= 2*yysize
; 
1197   if (YYMAXDEPTH 
< yynewSize
) 
1198     yynewSize 
= YYMAXDEPTH
; 
1199   yynewItems 
= (yyGLRStackItem
*) YYMALLOC (yynewSize 
* sizeof yynewItems
[0]); 
1201     yyMemoryExhausted (yystackp
); 
1202   for (yyp0 
= yystackp
->yyitems
, yyp1 
= yynewItems
, yyn 
= yysize
; 
1204        yyn 
-= 1, yyp0 
+= 1, yyp1 
+= 1) 
1207       if (*(yybool 
*) yyp0
) 
1209           yyGLRState
* yys0 
= &yyp0
->yystate
; 
1210           yyGLRState
* yys1 
= &yyp1
->yystate
; 
1211           if (yys0
->yypred 
!= NULL
) 
1213               YYRELOC (yyp0
, yyp1
, yys0
->yypred
, yystate
); 
1214           if (! yys0
->yyresolved 
&& yys0
->yysemantics
.yyfirstVal 
!= NULL
) 
1215             yys1
->yysemantics
.yyfirstVal 
= 
1216               YYRELOC(yyp0
, yyp1
, yys0
->yysemantics
.yyfirstVal
, yyoption
); 
1220           yySemanticOption
* yyv0 
= &yyp0
->yyoption
; 
1221           yySemanticOption
* yyv1 
= &yyp1
->yyoption
; 
1222           if (yyv0
->yystate 
!= NULL
) 
1223             yyv1
->yystate 
= YYRELOC (yyp0
, yyp1
, yyv0
->yystate
, yystate
); 
1224           if (yyv0
->yynext 
!= NULL
) 
1225             yyv1
->yynext 
= YYRELOC (yyp0
, yyp1
, yyv0
->yynext
, yyoption
); 
1228   if (yystackp
->yysplitPoint 
!= NULL
) 
1229     yystackp
->yysplitPoint 
= YYRELOC (yystackp
->yyitems
, yynewItems
, 
1230                                  yystackp
->yysplitPoint
, yystate
); 
1232   for (yyn 
= 0; yyn 
< yystackp
->yytops
.yysize
; yyn 
+= 1) 
1233     if (yystackp
->yytops
.yystates
[yyn
] != NULL
) 
1234       yystackp
->yytops
.yystates
[yyn
] = 
1235         YYRELOC (yystackp
->yyitems
, yynewItems
, 
1236                  yystackp
->yytops
.yystates
[yyn
], yystate
); 
1237   YYFREE (yystackp
->yyitems
); 
1238   yystackp
->yyitems 
= yynewItems
; 
1239   yystackp
->yynextFree 
= yynewItems 
+ yysize
; 
1240   yystackp
->yyspaceLeft 
= yynewSize 
- yysize
; 
1245 yyfreeGLRStack (yyGLRStack
* yystackp
) 
1247   YYFREE (yystackp
->yyitems
); 
1248   yyfreeStateSet (&yystackp
->yytops
); 
1251 /** Assuming that S is a GLRState somewhere on STACK, update the 
1252  *  splitpoint of STACK, if needed, so that it is at least as deep as 
1255 yyupdateSplit (yyGLRStack
* yystackp
, yyGLRState
* yys
) 
1257   if (yystackp
->yysplitPoint 
!= NULL 
&& yystackp
->yysplitPoint 
> yys
) 
1258     yystackp
->yysplitPoint 
= yys
; 
1261 /** Invalidate stack #K in STACK.  */ 
1263 yymarkStackDeleted (yyGLRStack
* yystackp
, size_t yyk
) 
1265   if (yystackp
->yytops
.yystates
[yyk
] != NULL
) 
1266     yystackp
->yylastDeleted 
= yystackp
->yytops
.yystates
[yyk
]; 
1267   yystackp
->yytops
.yystates
[yyk
] = NULL
; 
1270 /** Undelete the last stack that was marked as deleted.  Can only be 
1271     done once after a deletion, and only when all other stacks have 
1274 yyundeleteLastStack (yyGLRStack
* yystackp
) 
1276   if (yystackp
->yylastDeleted 
== NULL 
|| yystackp
->yytops
.yysize 
!= 0) 
1278   yystackp
->yytops
.yystates
[0] = yystackp
->yylastDeleted
; 
1279   yystackp
->yytops
.yysize 
= 1; 
1280   YYDPRINTF ((stderr
, "Restoring last deleted stack as stack #0.\n")); 
1281   yystackp
->yylastDeleted 
= NULL
; 
1285 yyremoveDeletes (yyGLRStack
* yystackp
) 
1289   while (yyj 
< yystackp
->yytops
.yysize
) 
1291       if (yystackp
->yytops
.yystates
[yyi
] == NULL
) 
1295               YYDPRINTF ((stderr
, "Removing dead stacks.\n")); 
1297           yystackp
->yytops
.yysize 
-= 1; 
1301           yystackp
->yytops
.yystates
[yyj
] = yystackp
->yytops
.yystates
[yyi
]; 
1302           /* In the current implementation, it's unnecessary to copy 
1303              yystackp->yytops.yylookaheadStatuses[yyi] since, after 
1304              yyremoveDeletes returns, the parser immediately either enters 
1305              deterministic operation or shifts a token.  However, it doesn't 
1306              hurt, and the code might evolve to need it.  */ 
1307           yystackp
->yytops
.yylookaheadStatuses
[yyj
] = 
1308             yystackp
->yytops
.yylookaheadStatuses
[yyi
]; 
1311               YYDPRINTF ((stderr
, "Rename stack %lu -> %lu.\n", 
1312                           (unsigned long int) yyi
, (unsigned long int) yyj
)); 
1320 /** Shift to a new state on stack #K of STACK, corresponding to LR state 
1321  * LRSTATE, at input position POSN, with (resolved) semantic value SVAL.  */ 
1323 yyglrShift (yyGLRStack
* yystackp
, size_t yyk
, yyStateNum yylrState
, 
1325             YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
) 
1327   yyGLRState
* yynewState 
= &yynewGLRStackItem (yystackp
, yytrue
)->yystate
; 
1329   yynewState
->yylrState 
= yylrState
; 
1330   yynewState
->yyposn 
= yyposn
; 
1331   yynewState
->yyresolved 
= yytrue
; 
1332   yynewState
->yypred 
= yystackp
->yytops
.yystates
[yyk
]; 
1333   yynewState
->yysemantics
.yysval 
= *yyvalp
; 
1334   yynewState
->yyloc 
= *yylocp
; 
1335   yystackp
->yytops
.yystates
[yyk
] = yynewState
; 
1337   YY_RESERVE_GLRSTACK (yystackp
); 
1340 /** Shift stack #K of YYSTACK, to a new state corresponding to LR 
1341  *  state YYLRSTATE, at input position YYPOSN, with the (unresolved) 
1342  *  semantic value of YYRHS under the action for YYRULE.  */ 
1344 yyglrShiftDefer (yyGLRStack
* yystackp
, size_t yyk
, yyStateNum yylrState
, 
1345                  size_t yyposn
, yyGLRState
* rhs
, yyRuleNum yyrule
) 
1347   yyGLRState
* yynewState 
= &yynewGLRStackItem (yystackp
, yytrue
)->yystate
; 
1349   yynewState
->yylrState 
= yylrState
; 
1350   yynewState
->yyposn 
= yyposn
; 
1351   yynewState
->yyresolved 
= yyfalse
; 
1352   yynewState
->yypred 
= yystackp
->yytops
.yystates
[yyk
]; 
1353   yynewState
->yysemantics
.yyfirstVal 
= NULL
; 
1354   yystackp
->yytops
.yystates
[yyk
] = yynewState
; 
1356   /* Invokes YY_RESERVE_GLRSTACK.  */ 
1357   yyaddDeferredAction (yystackp
, yyk
, yynewState
, rhs
, yyrule
); 
1360 /** Pop the symbols consumed by reduction #RULE from the top of stack 
1361  *  #K of STACK, and perform the appropriate semantic action on their 
1362  *  semantic values.  Assumes that all ambiguities in semantic values 
1363  *  have been previously resolved.  Set *VALP to the resulting value, 
1364  *  and *LOCP to the computed location (if any).  Return value is as 
1365  *  for userAction.  */ 
1366 static inline YYRESULTTAG
 
1367 yydoAction (yyGLRStack
* yystackp
, size_t yyk
, yyRuleNum yyrule
, 
1368             YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[) 
1370   int yynrhs 
= yyrhsLength (yyrule
); 
1372   if (yystackp
->yysplitPoint 
== NULL
) 
1374       /* Standard special case: single stack.  */ 
1375       yyGLRStackItem
* rhs 
= (yyGLRStackItem
*) yystackp
->yytops
.yystates
[yyk
]; 
1376       YYASSERT (yyk 
== 0); 
1377       yystackp
->yynextFree 
-= yynrhs
; 
1378       yystackp
->yyspaceLeft 
+= yynrhs
; 
1379       yystackp
->yytops
.yystates
[0] = & yystackp
->yynextFree
[-1].yystate
; 
1380       return yyuserAction (yyrule
, yynrhs
, rhs
, 
1381                            yyvalp
, yylocp
, yystackp
]b4_user_args
[); 
1385       /* At present, doAction is never called in nondeterministic 
1386        * mode, so this branch is never taken.  It is here in 
1387        * anticipation of a future feature that will allow immediate 
1388        * evaluation of selected actions in nondeterministic mode.  */ 
1391       yyGLRStackItem yyrhsVals
[YYMAXRHS 
+ YYMAXLEFT 
+ 1]; 
1392       yys 
= yyrhsVals
[YYMAXRHS 
+ YYMAXLEFT
].yystate
.yypred
 
1393         = yystackp
->yytops
.yystates
[yyk
];]b4_location_if([[ 
1395         /* Set default location.  */ 
1396         yyrhsVals
[YYMAXRHS 
+ YYMAXLEFT 
- 1].yystate
.yyloc 
= yys
->yyloc
;]])[ 
1397       for (yyi 
= 0; yyi 
< yynrhs
; yyi 
+= 1) 
1402       yyupdateSplit (yystackp
, yys
); 
1403       yystackp
->yytops
.yystates
[yyk
] = yys
; 
1404       return yyuserAction (yyrule
, yynrhs
, yyrhsVals 
+ YYMAXRHS 
+ YYMAXLEFT 
- 1, 
1405                            yyvalp
, yylocp
, yystackp
]b4_user_args
[); 
1410 # define YY_REDUCE_PRINT(Args) 
1412 # define YY_REDUCE_PRINT(Args)          \ 
1415     yy_reduce_print Args;               \ 
1418 /*----------------------------------------------------------. 
1419 | Report that the RULE is going to be reduced on stack #K.  | 
1420 `----------------------------------------------------------*/ 
1422 /*ARGSUSED*/ static inline void 
1423 yy_reduce_print (yyGLRStack
* yystackp
, size_t yyk
, yyRuleNum yyrule
, 
1424                  YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[) 
1426   int yynrhs 
= yyrhsLength (yyrule
); 
1427   yybool yynormal 
__attribute__ ((__unused__
)) = 
1428     (yystackp
->yysplitPoint 
== NULL
); 
1429   yyGLRStackItem
* yyvsp 
= (yyGLRStackItem
*) yystackp
->yytops
.yystates
[yyk
]; 
1434 ]b4_parse_param_use
[]dnl
 
1435 [  YYFPRINTF (stderr
, "Reducing stack %lu by rule %d (line %lu):\n", 
1436              (unsigned long int) yyk
, yyrule 
- 1, 
1437              (unsigned long int) yyrline
[yyrule
]); 
1438   /* The symbols being reduced.  */ 
1439   for (yyi 
= 0; yyi 
< yynrhs
; yyi
++) 
1441       fprintf (stderr
, "   $%d = ", yyi 
+ 1); 
1442       yy_symbol_print (stderr
, yyrhs
[yyprhs
[yyrule
] + yyi
], 
1443                        &]b4_rhs_value(yynrhs
, yyi 
+ 1)[ 
1444                        ]b4_location_if([, &]b4_rhs_location(yynrhs
, yyi 
+ 1))[]dnl
 
1446       fprintf (stderr
, "\n"); 
1451 /** Pop items off stack #K of STACK according to grammar rule RULE, 
1452  *  and push back on the resulting nonterminal symbol.  Perform the 
1453  *  semantic action associated with RULE and store its value with the 
1454  *  newly pushed state, if FORCEEVAL or if STACK is currently 
1455  *  unambiguous.  Otherwise, store the deferred semantic action with 
1456  *  the new state.  If the new state would have an identical input 
1457  *  position, LR state, and predecessor to an existing state on the stack, 
1458  *  it is identified with that existing state, eliminating stack #K from 
1459  *  the STACK.  In this case, the (necessarily deferred) semantic value is 
1460  *  added to the options for the existing state's semantic value. 
1462 static inline YYRESULTTAG
 
1463 yyglrReduce (yyGLRStack
* yystackp
, size_t yyk
, yyRuleNum yyrule
, 
1464              yybool yyforceEval
]b4_user_formals
[) 
1466   size_t yyposn 
= yystackp
->yytops
.yystates
[yyk
]->yyposn
; 
1468   if (yyforceEval 
|| yystackp
->yysplitPoint 
== NULL
) 
1473       YY_REDUCE_PRINT ((yystackp
, yyk
, yyrule
, &yysval
, &yyloc
]b4_user_args
[)); 
1474       YYCHK (yydoAction (yystackp
, yyk
, yyrule
, &yysval
, 
1475                          &yyloc
]b4_user_args
[)); 
1476       YY_SYMBOL_PRINT ("-> $$ =", yyr1
[yyrule
], &yysval
, &yyloc
); 
1477       yyglrShift (yystackp
, yyk
, 
1478                   yyLRgotoState (yystackp
->yytops
.yystates
[yyk
]->yylrState
, 
1479                                  yylhsNonterm (yyrule
)), 
1480                   yyposn
, &yysval
, &yyloc
); 
1486       yyGLRState
* yys
, *yys0 
= yystackp
->yytops
.yystates
[yyk
]; 
1487       yyStateNum yynewLRState
; 
1489       for (yys 
= yystackp
->yytops
.yystates
[yyk
], yyn 
= yyrhsLength (yyrule
); 
1495       yyupdateSplit (yystackp
, yys
); 
1496       yynewLRState 
= yyLRgotoState (yys
->yylrState
, yylhsNonterm (yyrule
)); 
1498                   "Reduced stack %lu by rule #%d; action deferred.  Now in state %d.\n", 
1499                   (unsigned long int) yyk
, yyrule 
- 1, yynewLRState
)); 
1500       for (yyi 
= 0; yyi 
< yystackp
->yytops
.yysize
; yyi 
+= 1) 
1501         if (yyi 
!= yyk 
&& yystackp
->yytops
.yystates
[yyi
] != NULL
) 
1503             yyGLRState
* yyp
, *yysplit 
= yystackp
->yysplitPoint
; 
1504             yyp 
= yystackp
->yytops
.yystates
[yyi
]; 
1505             while (yyp 
!= yys 
&& yyp 
!= yysplit 
&& yyp
->yyposn 
>= yyposn
) 
1507                 if (yyp
->yylrState 
== yynewLRState 
&& yyp
->yypred 
== yys
) 
1509                     yyaddDeferredAction (yystackp
, yyk
, yyp
, yys0
, yyrule
); 
1510                     yymarkStackDeleted (yystackp
, yyk
); 
1511                     YYDPRINTF ((stderr
, "Merging stack %lu into stack %lu.\n", 
1512                                 (unsigned long int) yyk
, 
1513                                 (unsigned long int) yyi
)); 
1519       yystackp
->yytops
.yystates
[yyk
] = yys
; 
1520       yyglrShiftDefer (yystackp
, yyk
, yynewLRState
, yyposn
, yys0
, yyrule
); 
1526 yysplitStack (yyGLRStack
* yystackp
, size_t yyk
) 
1528   if (yystackp
->yysplitPoint 
== NULL
) 
1530       YYASSERT (yyk 
== 0); 
1531       yystackp
->yysplitPoint 
= yystackp
->yytops
.yystates
[yyk
]; 
1533   if (yystackp
->yytops
.yysize 
>= yystackp
->yytops
.yycapacity
) 
1535       yyGLRState
** yynewStates
; 
1536       yybool
* yynewLookaheadStatuses
; 
1540       if (yystackp
->yytops
.yycapacity
 
1541           > (YYSIZEMAX 
/ (2 * sizeof yynewStates
[0]))) 
1542         yyMemoryExhausted (yystackp
); 
1543       yystackp
->yytops
.yycapacity 
*= 2; 
1546         (yyGLRState
**) YYREALLOC (yystackp
->yytops
.yystates
, 
1547                                   (yystackp
->yytops
.yycapacity
 
1548                                    * sizeof yynewStates
[0])); 
1549       if (yynewStates 
== NULL
) 
1550         yyMemoryExhausted (yystackp
); 
1551       yystackp
->yytops
.yystates 
= yynewStates
; 
1553       yynewLookaheadStatuses 
= 
1554         (yybool
*) YYREALLOC (yystackp
->yytops
.yylookaheadStatuses
, 
1555                              (yystackp
->yytops
.yycapacity
 
1556                               * sizeof yynewLookaheadStatuses
[0])); 
1557       if (yynewLookaheadStatuses 
== NULL
) 
1558         yyMemoryExhausted (yystackp
); 
1559       yystackp
->yytops
.yylookaheadStatuses 
= yynewLookaheadStatuses
; 
1561   yystackp
->yytops
.yystates
[yystackp
->yytops
.yysize
] 
1562     = yystackp
->yytops
.yystates
[yyk
]; 
1563   yystackp
->yytops
.yylookaheadStatuses
[yystackp
->yytops
.yysize
] 
1564     = yystackp
->yytops
.yylookaheadStatuses
[yyk
]; 
1565   yystackp
->yytops
.yysize 
+= 1; 
1566   return yystackp
->yytops
.yysize
-1; 
1569 /** True iff Y0 and Y1 represent identical options at the top level. 
1570  *  That is, they represent the same rule applied to RHS symbols 
1571  *  that produce the same terminal symbols.  */ 
1573 yyidenticalOptions (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
) 
1575   if (yyy0
->yyrule 
== yyy1
->yyrule
) 
1577       yyGLRState 
*yys0
, *yys1
; 
1579       for (yys0 
= yyy0
->yystate
, yys1 
= yyy1
->yystate
, 
1580            yyn 
= yyrhsLength (yyy0
->yyrule
); 
1582            yys0 
= yys0
->yypred
, yys1 
= yys1
->yypred
, yyn 
-= 1) 
1583         if (yys0
->yyposn 
!= yys1
->yyposn
) 
1591 /** Assuming identicalOptions (Y0,Y1), destructively merge the 
1592  *  alternative semantic values for the RHS-symbols of Y1 and Y0.  */ 
1594 yymergeOptionSets (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
) 
1596   yyGLRState 
*yys0
, *yys1
; 
1598   for (yys0 
= yyy0
->yystate
, yys1 
= yyy1
->yystate
, 
1599        yyn 
= yyrhsLength (yyy0
->yyrule
); 
1601        yys0 
= yys0
->yypred
, yys1 
= yys1
->yypred
, yyn 
-= 1) 
1605       else if (yys0
->yyresolved
) 
1607           yys1
->yyresolved 
= yytrue
; 
1608           yys1
->yysemantics
.yysval 
= yys0
->yysemantics
.yysval
; 
1610       else if (yys1
->yyresolved
) 
1612           yys0
->yyresolved 
= yytrue
; 
1613           yys0
->yysemantics
.yysval 
= yys1
->yysemantics
.yysval
; 
1617           yySemanticOption
** yyz0p
; 
1618           yySemanticOption
* yyz1
; 
1619           yyz0p 
= &yys0
->yysemantics
.yyfirstVal
; 
1620           yyz1 
= yys1
->yysemantics
.yyfirstVal
; 
1621           while (YYID (yytrue
)) 
1623               if (yyz1 
== *yyz0p 
|| yyz1 
== NULL
) 
1625               else if (*yyz0p 
== NULL
) 
1630               else if (*yyz0p 
< yyz1
) 
1632                   yySemanticOption
* yyz 
= *yyz0p
; 
1634                   yyz1 
= yyz1
->yynext
; 
1635                   (*yyz0p
)->yynext 
= yyz
; 
1637               yyz0p 
= &(*yyz0p
)->yynext
; 
1639           yys1
->yysemantics
.yyfirstVal 
= yys0
->yysemantics
.yyfirstVal
; 
1644 /** Y0 and Y1 represent two possible actions to take in a given 
1645  *  parsing state; return 0 if no combination is possible, 
1646  *  1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred.  */ 
1648 yypreference (yySemanticOption
* y0
, yySemanticOption
* y1
) 
1650   yyRuleNum r0 
= y0
->yyrule
, r1 
= y1
->yyrule
; 
1651   int p0 
= yydprec
[r0
], p1 
= yydprec
[r1
]; 
1655       if (yymerger
[r0
] == 0 || yymerger
[r0
] != yymerger
[r1
]) 
1660   if (p0 
== 0 || p1 
== 0) 
1669 static YYRESULTTAG 
yyresolveValue (yyGLRState
* yys
, 
1670                                    yyGLRStack
* yystackp
, YYSTYPE
* yyvalp
, 
1671                                    YYLTYPE
* yylocp
]b4_user_formals
[); 
1674 yyresolveStates (yyGLRState
* yys
, int yyn
, 
1675                  yyGLRStack
* yystackp
]b4_user_formals
[) 
1679       YYASSERT (yys
->yypred
); 
1680       YYCHK (yyresolveStates (yys
->yypred
, yyn
-1, yystackp
]b4_user_args
[)); 
1681       if (! yys
->yyresolved
) 
1684           YYRESULTTAG yyflag 
= yyresolveValue (yys
, yystackp
, &yysval
, 
1685                                                &yys
->yyloc
]b4_user_args
[); 
1688               yys
->yysemantics
.yyfirstVal 
= NULL
; 
1691           yys
->yysemantics
.yysval 
= yysval
; 
1692           yys
->yyresolved 
= yytrue
; 
1699 yyresolveAction (yySemanticOption
* yyopt
, yyGLRStack
* yystackp
, 
1700                  YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[) 
1702   yyGLRStackItem yyrhsVals
[YYMAXRHS 
+ YYMAXLEFT 
+ 1]; 
1705   YYSTYPE yylval_current
; 
1706   YYLTYPE yylloc_current
; 
1707   YYRESULTTAG yyresult
; 
1709   yynrhs 
= yyrhsLength (yyopt
->yyrule
); 
1710   YYCHK (yyresolveStates (yyopt
->yystate
, yynrhs
, yystackp
]b4_user_args
[)); 
1711   yyrhsVals
[YYMAXRHS 
+ YYMAXLEFT
].yystate
.yypred 
= yyopt
->yystate
;]b4_location_if([[ 
1713     /* Set default location.  */ 
1714     yyrhsVals
[YYMAXRHS 
+ YYMAXLEFT 
- 1].yystate
.yyloc 
= yyopt
->yystate
->yyloc
;]])[ 
1715   yychar_current 
= yychar
; 
1716   yylval_current 
= yylval
; 
1717   yylloc_current 
= yylloc
; 
1718   yychar 
= yyopt
->yyrawchar
; 
1719   yylval 
= yyopt
->yyval
; 
1720   yylloc 
= yyopt
->yyloc
; 
1721   yyresult 
= yyuserAction (yyopt
->yyrule
, yynrhs
, 
1722                            yyrhsVals 
+ YYMAXRHS 
+ YYMAXLEFT 
- 1, 
1723                            yyvalp
, yylocp
, yystackp
]b4_user_args
[); 
1724   yychar 
= yychar_current
; 
1725   yylval 
= yylval_current
; 
1726   yylloc 
= yylloc_current
; 
1732 yyreportTree (yySemanticOption
* yyx
, int yyindent
) 
1734   int yynrhs 
= yyrhsLength (yyx
->yyrule
); 
1737   yyGLRState
* yystates
[YYMAXRHS
]; 
1738   yyGLRState yyleftmost_state
; 
1740   for (yyi 
= yynrhs
, yys 
= yyx
->yystate
; 0 < yyi
; yyi 
-= 1, yys 
= yys
->yypred
) 
1741     yystates
[yyi
] = yys
; 
1744       yyleftmost_state
.yyposn 
= 0; 
1745       yystates
[0] = &yyleftmost_state
; 
1750   if (yyx
->yystate
->yyposn 
< yys
->yyposn 
+ 1) 
1751     YYFPRINTF (stderr
, "%*s%s -> <Rule %d, empty>\n", 
1752                yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)), 
1755     YYFPRINTF (stderr
, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n", 
1756                yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)), 
1757                yyx
->yyrule
, (unsigned long int) (yys
->yyposn 
+ 1), 
1758                (unsigned long int) yyx
->yystate
->yyposn
); 
1759   for (yyi 
= 1; yyi 
<= yynrhs
; yyi 
+= 1) 
1761       if (yystates
[yyi
]->yyresolved
) 
1763           if (yystates
[yyi
-1]->yyposn
+1 > yystates
[yyi
]->yyposn
) 
1764             YYFPRINTF (stderr
, "%*s%s <empty>\n", yyindent
+2, "", 
1765                        yytokenName (yyrhs
[yyprhs
[yyx
->yyrule
]+yyi
-1])); 
1767             YYFPRINTF (stderr
, "%*s%s <tokens %lu .. %lu>\n", yyindent
+2, "", 
1768                        yytokenName (yyrhs
[yyprhs
[yyx
->yyrule
]+yyi
-1]), 
1769                        (unsigned long int) (yystates
[yyi 
- 1]->yyposn 
+ 1), 
1770                        (unsigned long int) yystates
[yyi
]->yyposn
); 
1773         yyreportTree (yystates
[yyi
]->yysemantics
.yyfirstVal
, yyindent
+2); 
1778 static void yyreportAmbiguity (yySemanticOption
* yyx0
, yySemanticOption
* yyx1
, 
1779                                yyGLRStack
* yystackp
]b4_pure_formals
[) 
1780   __attribute__ ((__noreturn__
)); 
1781 /*ARGSUSED*/ static void 
1782 yyreportAmbiguity (yySemanticOption
* yyx0
, yySemanticOption
* yyx1
, 
1783                    yyGLRStack
* yystackp
]b4_pure_formals
[) 
1789   YYFPRINTF (stderr
, "Ambiguity detected.\n"); 
1790   YYFPRINTF (stderr
, "Option 1,\n"); 
1791   yyreportTree (yyx0
, 2); 
1792   YYFPRINTF (stderr
, "\nOption 2,\n"); 
1793   yyreportTree (yyx1
, 2); 
1794   YYFPRINTF (stderr
, "\n"); 
1796   yyFail (yystackp
][]b4_pure_args
[, YY_("syntax is ambiguous")); 
1800 /** Resolve the ambiguity represented in state S, perform the indicated 
1801  *  actions, and return the result.  */ 
1803 yyresolveValue (yyGLRState
* yys
, yyGLRStack
* yystackp
, YYSTYPE
* yyvalp
, 
1804                 YYLTYPE
* yylocp
]b4_user_formals
[) 
1806   yySemanticOption
* yyoptionList 
= yys
->yysemantics
.yyfirstVal
; 
1807   yySemanticOption
* yybest
; 
1808   yySemanticOption
** yypp
; 
1811   yybest 
= yyoptionList
; 
1813   for (yypp 
= &yyoptionList
->yynext
; *yypp 
!= NULL
; ) 
1815       yySemanticOption
* yyp 
= *yypp
; 
1817       if (yyidenticalOptions (yybest
, yyp
)) 
1819           yymergeOptionSets (yybest
, yyp
); 
1820           *yypp 
= yyp
->yynext
; 
1824           switch (yypreference (yybest
, yyp
)) 
1827               yyreportAmbiguity (yybest
, yyp
, yystackp
]b4_pure_args
[); 
1839               /* This cannot happen so it is not worth a YYASSERT (yyfalse), 
1840                  but some compilers complain if the default case is 
1844           yypp 
= &yyp
->yynext
; 
1850       yySemanticOption
* yyp
; 
1851       int yyprec 
= yydprec
[yybest
->yyrule
]; 
1852       YYCHK (yyresolveAction (yybest
, yystackp
, yyvalp
, yylocp
]b4_user_args
[)); 
1853       for (yyp 
= yybest
->yynext
; yyp 
!= NULL
; yyp 
= yyp
->yynext
) 
1855           if (yyprec 
== yydprec
[yyp
->yyrule
]) 
1859               YYRESULTTAG yyflag 
= yyresolveAction (yyp
, yystackp
, &yyval1
, 
1860                                                     &yydummy
]b4_user_args
[); 
1863                   yydestruct ("Cleanup: discarding merged value", 
1864                               yystos
[yys
->yylrState
], 
1865                               yyvalp
]b4_location_if([, yylocp
])[]b4_user_args
[); 
1868               yyuserMerge (yymerger
[yyp
->yyrule
], yyvalp
, &yyval1
); 
1874     return yyresolveAction (yybest
, yystackp
, yyvalp
, yylocp
]b4_user_args
[); 
1878 yyresolveStack (yyGLRStack
* yystackp
]b4_user_formals
[) 
1880   if (yystackp
->yysplitPoint 
!= NULL
) 
1885       for (yyn 
= 0, yys 
= yystackp
->yytops
.yystates
[0]; 
1886            yys 
!= yystackp
->yysplitPoint
; 
1887            yys 
= yys
->yypred
, yyn 
+= 1) 
1889       YYCHK (yyresolveStates (yystackp
->yytops
.yystates
[0], yyn
, yystackp
 
1896 yycompressStack (yyGLRStack
* yystackp
) 
1898   yyGLRState
* yyp
, *yyq
, *yyr
; 
1900   if (yystackp
->yytops
.yysize 
!= 1 || yystackp
->yysplitPoint 
== NULL
) 
1903   for (yyp 
= yystackp
->yytops
.yystates
[0], yyq 
= yyp
->yypred
, yyr 
= NULL
; 
1904        yyp 
!= yystackp
->yysplitPoint
; 
1905        yyr 
= yyp
, yyp 
= yyq
, yyq 
= yyp
->yypred
) 
1908   yystackp
->yyspaceLeft 
+= yystackp
->yynextFree 
- yystackp
->yyitems
; 
1909   yystackp
->yynextFree 
= ((yyGLRStackItem
*) yystackp
->yysplitPoint
) + 1; 
1910   yystackp
->yyspaceLeft 
-= yystackp
->yynextFree 
- yystackp
->yyitems
; 
1911   yystackp
->yysplitPoint 
= NULL
; 
1912   yystackp
->yylastDeleted 
= NULL
; 
1916       yystackp
->yynextFree
->yystate 
= *yyr
; 
1918       yystackp
->yynextFree
->yystate
.yypred 
= &yystackp
->yynextFree
[-1].yystate
; 
1919       yystackp
->yytops
.yystates
[0] = &yystackp
->yynextFree
->yystate
; 
1920       yystackp
->yynextFree 
+= 1; 
1921       yystackp
->yyspaceLeft 
-= 1; 
1926 yyprocessOneStack (yyGLRStack
* yystackp
, size_t yyk
, 
1927                    size_t yyposn
]b4_pure_formals
[) 
1930   const short int* yyconflicts
; 
1932   yySymbol
* const yytokenp 
= yystackp
->yytokenp
; 
1934   while (yystackp
->yytops
.yystates
[yyk
] != NULL
) 
1936       yyStateNum yystate 
= yystackp
->yytops
.yystates
[yyk
]->yylrState
; 
1937       YYDPRINTF ((stderr
, "Stack %lu Entering state %d\n", 
1938                   (unsigned long int) yyk
, yystate
)); 
1940       YYASSERT (yystate 
!= YYFINAL
); 
1942       if (yyisDefaultedState (yystate
)) 
1944           yyrule 
= yydefaultAction (yystate
); 
1947               YYDPRINTF ((stderr
, "Stack %lu dies.\n", 
1948                           (unsigned long int) yyk
)); 
1949               yymarkStackDeleted (yystackp
, yyk
); 
1952           YYCHK (yyglrReduce (yystackp
, yyk
, yyrule
, yyfalse
]b4_user_args
[)); 
1956           yystackp
->yytops
.yylookaheadStatuses
[yyk
] = yytrue
; 
1957           if (*yytokenp 
== YYEMPTY
) 
1959               YYDPRINTF ((stderr
, "Reading a token: ")); 
1961               *yytokenp 
= YYTRANSLATE (yychar
); 
1962               YY_SYMBOL_PRINT ("Next token is", *yytokenp
, &yylval
, &yylloc
); 
1964           yygetLRActions (yystate
, *yytokenp
, &yyaction
, &yyconflicts
); 
1966           while (*yyconflicts 
!= 0) 
1968               size_t yynewStack 
= yysplitStack (yystackp
, yyk
); 
1969               YYDPRINTF ((stderr
, "Splitting off stack %lu from %lu.\n", 
1970                           (unsigned long int) yynewStack
, 
1971                           (unsigned long int) yyk
)); 
1972               YYCHK (yyglrReduce (yystackp
, yynewStack
, 
1973                                   *yyconflicts
, yyfalse
]b4_user_args
[)); 
1974               YYCHK (yyprocessOneStack (yystackp
, yynewStack
, 
1975                                         yyposn
]b4_pure_args
[)); 
1979           if (yyisShiftAction (yyaction
)) 
1981           else if (yyisErrorAction (yyaction
)) 
1983               YYDPRINTF ((stderr
, "Stack %lu dies.\n", 
1984                           (unsigned long int) yyk
)); 
1985               yymarkStackDeleted (yystackp
, yyk
); 
1989             YYCHK (yyglrReduce (yystackp
, yyk
, -yyaction
, 
1990                                 yyfalse
]b4_user_args
[)); 
1996 /*ARGSUSED*/ static void 
1997 yyreportSyntaxError (yyGLRStack
* yystackp
]b4_user_formals
[) 
1999   if (yystackp
->yyerrState 
== 0) 
2002       yySymbol
* const yytokenp 
= yystackp
->yytokenp
; 
2004       yyn 
= yypact
[yystackp
->yytops
.yystates
[0]->yylrState
]; 
2005       if (YYPACT_NINF 
< yyn 
&& yyn 
< YYLAST
) 
2007           size_t yysize0 
= yytnamerr (NULL
, yytokenName (*yytokenp
)); 
2008           size_t yysize 
= yysize0
; 
2010           yybool yysize_overflow 
= yyfalse
; 
2012           enum { YYERROR_VERBOSE_ARGS_MAXIMUM 
= 5 }; 
2013           char const *yyarg
[YYERROR_VERBOSE_ARGS_MAXIMUM
]; 
2017           static char const yyunexpected
[] = "syntax error, unexpected %s"; 
2018           static char const yyexpecting
[] = ", expecting %s"; 
2019           static char const yyor
[] = " or %s"; 
2020           char yyformat
[sizeof yyunexpected
 
2021                         + sizeof yyexpecting 
- 1 
2022                         + ((YYERROR_VERBOSE_ARGS_MAXIMUM 
- 2) 
2023                            * (sizeof yyor 
- 1))]; 
2024           char const *yyprefix 
= yyexpecting
; 
2026           /* Start YYX at -YYN if negative to avoid negative indexes in 
2028           int yyxbegin 
= yyn 
< 0 ? -yyn 
: 0; 
2030           /* Stay within bounds of both yycheck and yytname.  */ 
2031           int yychecklim 
= YYLAST 
- yyn
; 
2032           int yyxend 
= yychecklim 
< YYNTOKENS 
? yychecklim 
: YYNTOKENS
; 
2035           yyarg
[0] = yytokenName (*yytokenp
); 
2036           yyfmt 
= yystpcpy (yyformat
, yyunexpected
); 
2038           for (yyx 
= yyxbegin
; yyx 
< yyxend
; ++yyx
) 
2039             if (yycheck
[yyx 
+ yyn
] == yyx 
&& yyx 
!= YYTERROR
) 
2041                 if (yycount 
== YYERROR_VERBOSE_ARGS_MAXIMUM
) 
2045                     yyformat
[sizeof yyunexpected 
- 1] = '\0'; 
2048                 yyarg
[yycount
++] = yytokenName (yyx
); 
2049                 yysize1 
= yysize 
+ yytnamerr (NULL
, yytokenName (yyx
)); 
2050                 yysize_overflow 
|= yysize1 
< yysize
; 
2052                 yyfmt 
= yystpcpy (yyfmt
, yyprefix
); 
2056           yyf 
= YY_(yyformat
); 
2057           yysize1 
= yysize 
+ strlen (yyf
); 
2058           yysize_overflow 
|= yysize1 
< yysize
; 
2061           if (!yysize_overflow
) 
2062             yymsg 
= (char *) YYMALLOC (yysize
); 
2068               while ((*yyp 
= *yyf
)) 
2070                   if (*yyp 
== '%' && yyf
[1] == 's' && yyi 
< yycount
) 
2072                       yyp 
+= yytnamerr (yyp
, yyarg
[yyi
++]); 
2081               yyerror (]b4_lyyerror_args
[yymsg
); 
2086               yyerror (]b4_lyyerror_args
[YY_("syntax error")); 
2087               yyMemoryExhausted (yystackp
); 
2091 #endif /* YYERROR_VERBOSE */ 
2092         yyerror (]b4_lyyerror_args
[YY_("syntax error")); 
2097 /* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP, 
2098    yylval, and yylloc are the syntactic category, semantic value, and location 
2099    of the look-ahead.  */ 
2100 /*ARGSUSED*/ static void 
2101 yyrecoverSyntaxError (yyGLRStack
* yystackp
]b4_user_formals
[) 
2103   yySymbol
* const yytokenp 
= yystackp
->yytokenp
; 
2107   if (yystackp
->yyerrState 
== 3) 
2108     /* We just shifted the error token and (perhaps) took some 
2109        reductions.  Skip tokens until we can proceed.  */ 
2110     while (YYID (yytrue
)) 
2112         if (*yytokenp 
== YYEOF
) 
2113           yyFail (yystackp
][]b4_lpure_args
[, NULL
); 
2114         if (*yytokenp 
!= YYEMPTY
) 
2116             /* We throw away the lookahead, but the error range 
2117                of the shifted error token must take it into account.  */ 
2118             yyGLRState 
*yys 
= yystackp
->yytops
.yystates
[0]; 
2119             yyGLRStackItem yyerror_range
[3]; 
2120             yyerror_range
[1].yystate
.yyloc 
= yys
->yyloc
; 
2121             yyerror_range
[2].yystate
.yyloc 
= yylloc
; 
2122             YYLLOC_DEFAULT (yys
->yyloc
, yyerror_range
, 2);]])[ 
2123             yydestruct ("Error: discarding", 
2124                         *yytokenp
, &yylval
]b4_location_if([, &yylloc
])[]b4_user_args
[); 
2126         YYDPRINTF ((stderr
, "Reading a token: ")); 
2128         *yytokenp 
= YYTRANSLATE (yychar
); 
2129         YY_SYMBOL_PRINT ("Next token is", *yytokenp
, &yylval
, &yylloc
); 
2130         yyj 
= yypact
[yystackp
->yytops
.yystates
[0]->yylrState
]; 
2131         if (yyis_pact_ninf (yyj
)) 
2134         if (yyj 
< 0 || YYLAST 
< yyj 
|| yycheck
[yyj
] != *yytokenp
) 
2136             if (yydefact
[yystackp
->yytops
.yystates
[0]->yylrState
] != 0) 
2139         else if (yytable
[yyj
] != 0 && ! yyis_table_ninf (yytable
[yyj
])) 
2143   /* Reduce to one stack.  */ 
2144   for (yyk 
= 0; yyk 
< yystackp
->yytops
.yysize
; yyk 
+= 1) 
2145     if (yystackp
->yytops
.yystates
[yyk
] != NULL
) 
2147   if (yyk 
>= yystackp
->yytops
.yysize
) 
2148     yyFail (yystackp
][]b4_lpure_args
[, NULL
); 
2149   for (yyk 
+= 1; yyk 
< yystackp
->yytops
.yysize
; yyk 
+= 1) 
2150     yymarkStackDeleted (yystackp
, yyk
); 
2151   yyremoveDeletes (yystackp
); 
2152   yycompressStack (yystackp
); 
2154   /* Now pop stack until we find a state that shifts the error token.  */ 
2155   yystackp
->yyerrState 
= 3; 
2156   while (yystackp
->yytops
.yystates
[0] != NULL
) 
2158       yyGLRState 
*yys 
= yystackp
->yytops
.yystates
[0]; 
2159       yyj 
= yypact
[yys
->yylrState
]; 
2160       if (! yyis_pact_ninf (yyj
)) 
2163           if (0 <= yyj 
&& yyj 
<= YYLAST 
&& yycheck
[yyj
] == YYTERROR
 
2164               && yyisShiftAction (yytable
[yyj
])) 
2166               /* Shift the error token having adjusted its location.  */ 
2167               YYLTYPE yyerrloc
;]b4_location_if([[ 
2168               yystackp
->yyerror_range
[2].yystate
.yyloc 
= yylloc
; 
2169               YYLLOC_DEFAULT (yyerrloc
, yystackp
->yyerror_range
, 2);]])[ 
2170               YY_SYMBOL_PRINT ("Shifting", yystos
[yytable
[yyj
]], 
2171                                &yylval
, &yyerrloc
); 
2172               yyglrShift (yystackp
, 0, yytable
[yyj
], 
2173                           yys
->yyposn
, &yylval
, &yyerrloc
); 
2174               yys 
= yystackp
->yytops
.yystates
[0]; 
2178 ]b4_location_if([[      yystackp
->yyerror_range
[1].yystate
.yyloc 
= yys
->yyloc
;]])[ 
2179       yydestroyGLRState ("Error: popping", yys
]b4_user_args
[); 
2180       yystackp
->yytops
.yystates
[0] = yys
->yypred
; 
2181       yystackp
->yynextFree 
-= 1; 
2182       yystackp
->yyspaceLeft 
+= 1; 
2184   if (yystackp
->yytops
.yystates
[0] == NULL
) 
2185     yyFail (yystackp
][]b4_lpure_args
[, NULL
); 
2188 #define YYCHK1(YYE)                                                          \ 
2198       goto yyuser_error;                                                     \ 
2209 ]b4_c_ansi_function_def([yyparse
], [int], b4_parse_param
)[ 
2214   yyGLRStack
* const yystackp 
= &yystack
; 
2217   YYDPRINTF ((stderr
, "Starting parse\n")); 
2221   yylval 
= yyval_default
; 
2223 #if YYLTYPE_IS_TRIVIAL 
2224   yylloc
.first_line   
= yylloc
.last_line   
= 1; 
2225   yylloc
.first_column 
= yylloc
.last_column 
= 0; 
2228 m4_ifdef([b4_initial_action
], [ 
2229 m4_pushdef([b4_at_dollar
],     [yylloc
])dnl
 
2230 m4_pushdef([b4_dollar_dollar
], [yylval
])dnl
 
2231   /* User initialization code.  */ 
2233 m4_popdef([b4_dollar_dollar
])dnl
 
2234 m4_popdef([b4_at_dollar
])dnl
 
2235 /* Line __line__ of glr.c.  */ 
2236 b4_syncline([@oline@
], [@ofile@
])])dnl
 
2238   if (! yyinitGLRStack (yystackp
, YYINITDEPTH
)) 
2239     goto yyexhaustedlab
; 
2240   switch (YYSETJMP (yystack
.yyexception_buffer
)) 
2243     case 1: goto yyabortlab
; 
2244     case 2: goto yyexhaustedlab
; 
2245     default: goto yybuglab
; 
2247   yystack
.yytokenp 
= &yytoken
; 
2248   yyglrShift (&yystack
, 0, 0, 0, &yylval
, &yylloc
); 
2251   while (YYID (yytrue
)) 
2253       /* For efficiency, we have two loops, the first of which is 
2254          specialized to deterministic operation (single stack, no 
2255          potential ambiguity).  */ 
2257       while (YYID (yytrue
)) 
2261           const short int* yyconflicts
; 
2263           yyStateNum yystate 
= yystack
.yytops
.yystates
[0]->yylrState
; 
2264           YYDPRINTF ((stderr
, "Entering state %d\n", yystate
)); 
2265           if (yystate 
== YYFINAL
) 
2267           if (yyisDefaultedState (yystate
)) 
2269               yyrule 
= yydefaultAction (yystate
); 
2272 ]b4_location_if([[                yystack
.yyerror_range
[1].yystate
.yyloc 
= yylloc
;]])[ 
2273                   yyreportSyntaxError (&yystack
]b4_user_args
[); 
2276               YYCHK1 (yyglrReduce (&yystack
, 0, yyrule
, yytrue
]b4_user_args
[)); 
2280               if (yytoken 
== YYEMPTY
) 
2282                   YYDPRINTF ((stderr
, "Reading a token: ")); 
2284                   yytoken 
= YYTRANSLATE (yychar
); 
2285                   YY_SYMBOL_PRINT ("Next token is", yytoken
, &yylval
, &yylloc
); 
2287               yygetLRActions (yystate
, yytoken
, &yyaction
, &yyconflicts
); 
2288               if (*yyconflicts 
!= 0) 
2290               if (yyisShiftAction (yyaction
)) 
2292                   YY_SYMBOL_PRINT ("Shifting", yytoken
, &yylval
, &yylloc
); 
2293                   if (yytoken 
!= YYEOF
) 
2299                   yyglrShift (&yystack
, 0, yyaction
, yyposn
, &yylval
, &yylloc
); 
2300                   if (0 < yystack
.yyerrState
) 
2301                     yystack
.yyerrState 
-= 1; 
2303               else if (yyisErrorAction (yyaction
)) 
2305 ]b4_location_if([[                yystack
.yyerror_range
[1].yystate
.yyloc 
= yylloc
;]])[ 
2306                   yyreportSyntaxError (&yystack
]b4_user_args
[); 
2310                 YYCHK1 (yyglrReduce (&yystack
, 0, -yyaction
, yytrue
]b4_user_args
[)); 
2314       while (YYID (yytrue
)) 
2316           yySymbol yytoken_to_shift
; 
2318           size_t yyn 
= yystack
.yytops
.yysize
; 
2320           for (yys 
= 0; yys 
< yyn
; yys 
+= 1) 
2321             yystackp
->yytops
.yylookaheadStatuses
[yys
] = yychar 
!= YYEMPTY
; 
2323           /* yyprocessOneStack returns one of three things: 
2325               - An error flag.  If the caller is yyprocessOneStack, it 
2326                 immediately returns as well.  When the caller is finally 
2327                 yyparse, it jumps to an error label via YYCHK1. 
2329               - yyok, but yyprocessOneStack has invoked yymarkStackDeleted 
2330                 (&yystack, yys), which sets the top state of yys to NULL.  Thus, 
2331                 yyparse's following invocation of yyremoveDeletes will remove 
2334               - yyok, when ready to shift a token. 
2336              Except in the first case, yyparse will invoke yyremoveDeletes and 
2337              then shift the next token onto all remaining stacks.  This 
2338              synchronization of the shift (that is, after all preceding 
2339              reductions on all stacks) helps prevents double destructor calls 
2340              on yylval in the event of memory exhaustion.  */ 
2342           for (yys 
= 0; yys 
< yyn
; yys 
+= 1) 
2343             YYCHK1 (yyprocessOneStack (&yystack
, yys
, yyposn
]b4_lpure_args
[)); 
2344           yyremoveDeletes (&yystack
); 
2345           yyn 
= yystack
.yytops
.yysize
; 
2347           /* If any yyglrShift call fails, it will fail after shifting.  Thus, 
2348              a copy of yylval will already be on stack 0 in the event of a 
2349              failure in the following loop.  Thus, yytoken is set to YYEMPTY 
2350              before the loop to make sure the user destructor for yylval isn't 
2352           yytoken_to_shift 
= yytoken
; 
2356           for (yys 
= 0; yys 
< yyn
; yys 
+= 1) 
2359               const short int* yyconflicts
; 
2360               yyStateNum yystate 
= yystack
.yytops
.yystates
[yys
]->yylrState
; 
2361               yygetLRActions (yystate
, yytoken_to_shift
, &yyaction
, 
2363               /* Note that yyconflicts were handled by yyprocessOneStack.  */ 
2364               YYDPRINTF ((stderr
, "On stack %lu, ", (unsigned long int) yys
)); 
2365               YY_SYMBOL_PRINT ("shifting", yytoken_to_shift
, &yylval
, &yylloc
); 
2366               yyglrShift (&yystack
, yys
, yyaction
, yyposn
, 
2368               YYDPRINTF ((stderr
, "Stack %lu now in state #%d\n", 
2369                           (unsigned long int) yys
, 
2370                           yystack
.yytops
.yystates
[yys
]->yylrState
)); 
2372           if (yystack
.yytops
.yysize 
== 0) 
2374               yyundeleteLastStack (&yystack
); 
2375               if (yystack
.yytops
.yysize 
== 0) 
2376                 yyFail (&yystack
][]b4_lpure_args
[, YY_("syntax error")); 
2377               YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[)); 
2378               YYDPRINTF ((stderr
, "Returning to deterministic operation.\n")); 
2379 ]b4_location_if([[            yystack
.yyerror_range
[1].yystate
.yyloc 
= yylloc
;]])[ 
2380               yyreportSyntaxError (&yystack
]b4_user_args
[); 
2383           else if (yystack
.yytops
.yysize 
== 1) 
2385               YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[)); 
2386               YYDPRINTF ((stderr
, "Returning to deterministic operation.\n")); 
2387               yycompressStack (&yystack
); 
2393       yyrecoverSyntaxError (&yystack
]b4_user_args
[); 
2394       yyposn 
= yystack
.yytops
.yystates
[0]->yyposn
; 
2410   yyerror (]b4_lyyerror_args
[YY_("memory exhausted")); 
2415   if (yytoken 
!= YYEOF 
&& yytoken 
!= YYEMPTY
) 
2416     yydestruct ("Cleanup: discarding lookahead", 
2417                 yytoken
, &yylval
]b4_location_if([, &yylloc
])[]b4_user_args
[); 
2419   /* If the stack is well-formed, pop the stack until it is empty, 
2420      destroying its entries as we go.  But free the stack regardless 
2421      of whether it is well-formed.  */ 
2422   if (yystack
.yyitems
) 
2424       yyGLRState
** yystates 
= yystack
.yytops
.yystates
; 
2427           size_t yysize 
= yystack
.yytops
.yysize
; 
2429           for (yyk 
= 0; yyk 
< yysize
; yyk 
+= 1) 
2432                 while (yystates
[yyk
]) 
2434                     yyGLRState 
*yys 
= yystates
[yyk
]; 
2435 ]b4_location_if([[                  yystack
.yyerror_range
[1].yystate
.yyloc 
= yys
->yyloc
;]] 
2436 )[                  yydestroyGLRState ("Cleanup: popping", yys
]b4_user_args
[); 
2437                     yystates
[yyk
] = yys
->yypred
; 
2438                     yystack
.yynextFree 
-= 1; 
2439                     yystack
.yyspaceLeft 
+= 1; 
2444       yyfreeGLRStack (&yystack
); 
2450 /* DEBUGGING ONLY */ 
2452 static void yypstack (yyGLRStack
* yystackp
, size_t yyk
) 
2453   __attribute__ ((__unused__
)); 
2454 static void yypdumpstack (yyGLRStack
* yystackp
) __attribute__ ((__unused__
)); 
2457 yy_yypstack (yyGLRState
* yys
) 
2461       yy_yypstack (yys
->yypred
); 
2462       fprintf (stderr
, " -> "); 
2464   fprintf (stderr
, "%d@@%lu", yys
->yylrState
, (unsigned long int) yys
->yyposn
); 
2468 yypstates (yyGLRState
* yyst
) 
2471     fprintf (stderr
, "<null>"); 
2474   fprintf (stderr
, "\n"); 
2478 yypstack (yyGLRStack
* yystackp
, size_t yyk
) 
2480   yypstates (yystackp
->yytops
.yystates
[yyk
]); 
2483 #define YYINDEX(YYX)                                                         \ 
2484     ((YYX) == NULL ? -1 : (yyGLRStackItem*) (YYX) - yystackp->yyitems) 
2488 yypdumpstack (yyGLRStack
* yystackp
) 
2490   yyGLRStackItem
* yyp
; 
2492   for (yyp 
= yystackp
->yyitems
; yyp 
< yystackp
->yynextFree
; yyp 
+= 1) 
2494       fprintf (stderr
, "%3lu. ", (unsigned long int) (yyp 
- yystackp
->yyitems
)); 
2495       if (*(yybool 
*) yyp
) 
2497           fprintf (stderr
, "Res: %d, LR State: %d, posn: %lu, pred: %ld", 
2498                    yyp
->yystate
.yyresolved
, yyp
->yystate
.yylrState
, 
2499                    (unsigned long int) yyp
->yystate
.yyposn
, 
2500                    (long int) YYINDEX (yyp
->yystate
.yypred
)); 
2501           if (! yyp
->yystate
.yyresolved
) 
2502             fprintf (stderr
, ", firstVal: %ld", 
2503                      (long int) YYINDEX (yyp
->yystate
.yysemantics
.yyfirstVal
)); 
2507           fprintf (stderr
, "Option. rule: %d, state: %ld, next: %ld", 
2508                    yyp
->yyoption
.yyrule
, 
2509                    (long int) YYINDEX (yyp
->yyoption
.yystate
), 
2510                    (long int) YYINDEX (yyp
->yyoption
.yynext
)); 
2512       fprintf (stderr
, "\n"); 
2514   fprintf (stderr
, "Tops:"); 
2515   for (yyi 
= 0; yyi 
< yystackp
->yytops
.yysize
; yyi 
+= 1) 
2516     fprintf (stderr
, "%lu: %ld; ", (unsigned long int) yyi
, 
2517              (long int) YYINDEX (yystackp
->yytops
.yystates
[yyi
])); 
2518   fprintf (stderr
, "\n"); 
2524 m4_if(b4_defines_flag
, 0, [], 
2525 [@output @output_header_name@
 
2526 b4_copyright([Skeleton parser 
for GLR parsing with Bison
], 
2527              [2002, 2003, 2004, 2005, 2006])[ 
2529 /* C GLR parser skeleton written by Paul Hilfinger.  */ 
2532 b4_shared_declarations
 
2534 extern YYSTYPE b4_prefix
[]lval
; 
2536 b4_location_if([b4_pure_if([], 
2537 [extern YYLTYPE b4_prefix
[]lloc
;])