1 m4_divert(-1)                                                       -*- C 
-*- 
   4 # GLR skeleton for Bison 
   5 # Copyright (C) 2002 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 2 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, write to the Free Software 
  19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 
  23 ## ---------------- ## 
  25 ## ---------------- ## 
  28 m4_define_default([b4_stack_depth_max
], [10000]) 
  29 m4_define_default([b4_stack_depth_init
],  [200]) 
  32 m4_define_default([b4_location_type
], [yyltype
]) 
  36 ## ------------------------ ## 
  37 ## Pure/impure interfaces.  ## 
  38 ## ------------------------ ## 
  43 # Accumule in b4_lex_param all the yylex arguments. 
  44 # Yes, this is quite ugly... 
  45 m4_define([b4_lex_param
], 
  46 m4_dquote(b4_pure_if([[[[YYSTYPE 
*]], [[yylvalp]]][]dnl
 
  47 b4_location_if([, [[YYLTYPE 
*], [yyllocp
]]])])dnl
 
  48 m4_ifdef([b4_lex_param
], [, ]b4_lex_param
))) 
  53 m4_define([b4_user_formals
], 
  54 [m4_ifset([b4_parse_param
], [, b4_c_ansi_formals(b4_parse_param
)])]) 
  59 # Arguments passed to yyerror: user args plus yylloc. 
  60 m4_define([b4_yyerror_args
], 
  61 [b4_pure_if([b4_location_if([yylocp
, ])])dnl
 
  62 m4_ifset([b4_parse_param
], [b4_c_args(b4_parse_param
), ])]) 
  67 # Same as above, but on the lookahead, hence yyllocp instead of yylocp. 
  68 m4_define([b4_lyyerror_args
], 
  69 [b4_pure_if([b4_location_if([yyllocp
, ])])dnl
 
  70 m4_ifset([b4_parse_param
], [b4_c_args(b4_parse_param
), ])]) 
  75 # Arguments needed by yyerror: user args plus yylloc. 
  76 m4_define([b4_pure_args
], 
  77 [b4_pure_if([b4_location_if([, yylocp
])])[]b4_user_args
]) 
  82 # Arguments passed to yyerror: user formals plus yyllocp. 
  83 m4_define([b4_pure_formals
], 
  84 [b4_pure_if([b4_location_if([, YYLTYPE 
*yylocp
])])[]b4_user_formals
]) 
  89 # Same as above, but on the lookahead, hence yyllocp instead of yylocp. 
  90 m4_define([b4_lpure_args
], 
  91 [b4_pure_if([b4_location_if([, yyllocp
])])[]b4_user_args
]) 
  96 # Same as above, but on the lookahead, hence yyllocp instead of yylocp. 
  97 m4_define([b4_lpure_formals
], 
  98 [b4_pure_if([b4_location_if([YYLTYPE 
*yyllocp
])])[]b4_user_formals
]) 
 101 ## ----------------- ## 
 102 ## Semantic Values.  ## 
 103 ## ----------------- ## 
 106 # b4_lhs_value([TYPE]) 
 107 # -------------------- 
 108 # Expansion of $<TYPE>$. 
 109 m4_define([b4_lhs_value
], 
 110 [(*yyvalp
)[]m4_ifval([$
1], [.$
1])]) 
 113 # b4_rhs_value(RULE-LENGTH, NUM, [TYPE]) 
 114 # -------------------------------------- 
 115 # Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH 
 117 m4_define([b4_rhs_value
], 
 118 [yyvsp@
<:@
m4_eval([$
2 - $
1])@
:>@
.yystate
.yysemantics
.yysval
[]m4_ifval([$
3], [.$
3])]) 
 129 m4_define([b4_lhs_location
], 
 133 # b4_rhs_location(RULE-LENGTH, NUM) 
 134 # --------------------------------- 
 135 # Expansion of @NUM, where the current rule has RULE-LENGTH symbols 
 137 m4_define([b4_rhs_location
], 
 138 [yyvsp@
<:@
m4_eval([$
2 - $
1])@
:>@
.yystate
.yyloc
]) 
 142 ## ------------------- ## 
 143 ## Output file names.  ## 
 144 ## ------------------- ## 
 146 m4_define_default([b4_input_suffix
], [.y
]) 
 148 m4_define_default([b4_output_parser_suffix
], 
 149 [m4_translit(b4_input_suffix
, [yY
], [cC
])]) 
 151 m4_define_default([b4_output_parser_name
], 
 152 [b4_output_prefix
[]b4_output_infix
[]b4_output_parser_suffix
[]]) 
 155 m4_define_default([b4_output_header_suffix
], 
 156 [m4_translit(b4_input_suffix
, [yY
], [hH
])]) 
 158 m4_define_default([b4_output_header_name
], 
 159 [b4_output_prefix
[]b4_output_infix
[]b4_output_header_suffix
[]]) 
 161 m4_define_default([b4_header_guard
], 
 162                   [m4_bpatsubst(m4_toupper([BISON_
]b4_output_header_name
), 
 163                                 [[^ABCDEFGHIJKLMNOPQRSTUVWXYZ
]], [_
])]) 
 166 # We do want M4 expansion after # for CPP macros. 
 169 #output "b4_output_parser_name" 
 170 b4_copyright([Skeleton parser 
for GLR parsing with Bison
], [2002]) 
 172 /* This is the parser code for GLR (Generalized LR) parser. */ 
 182 m4_if(b4_prefix
[], [yy
], [], 
 183 [/* If NAME_PREFIX is specified substitute the variables and functions 
 185 #define yyparse b4_prefix[]parse 
 186 #define yylex   b4_prefix[]lex 
 187 #define yyerror b4_prefix[]error 
 188 #define yylval  b4_prefix[]lval 
 189 #define yychar  b4_prefix[]char 
 190 #define yydebug b4_prefix[]debug 
 191 #define yynerrs b4_prefix[]nerrs 
 192 b4_location_if([#define yylloc b4_prefix[]lloc])]) 
 194 b4_token_defines(b4_tokens
) 
 196 /* Copy the first part of user declarations.  */ 
 199 /* Enabling traces.  */ 
 201 # define YYDEBUG ]b4_debug[ 
 204 /* Enabling verbose error messages.  */ 
 205 #ifdef YYERROR_VERBOSE 
 206 # undef YYERROR_VERBOSE 
 207 # define YYERROR_VERBOSE 1 
 209 # define YYERROR_VERBOSE ]b4_error_verbose[ 
 213 ]m4_ifdef([b4_stype
], 
 214 [b4_syncline([b4_stype_line
], [b4_filename
]) 
 215 typedef union b4_stype yystype
; 
 216 /* Line __line__ of __file__.  */ 
 217 b4_syncline([__oline__
], [__ofile__
])], 
 218 [typedef int yystype
;])[ 
 219 # define YYSTYPE yystype 
 220 # define YYSTYPE_IS_TRIVIAL 1 
 224 typedef struct yyltype
 
 231 # define YYLTYPE ]b4_location_type[ 
 232 # define YYLTYPE_IS_TRIVIAL 1 
 235 /* Default (constant) values used for initialization for null 
 236    right-hand sides.  Unlike the standard bison.simple template, 
 237    here we set the default values of the $$ and $@ to zeroed-out 
 238    values.  Since the default value of these quantities is undefined, 
 239    this behavior is technically correct. */ 
 240 static YYSTYPE yyval_default
; 
 241 static YYLTYPE yyloc_default
; 
 243 /* Copy the second part of user declarations.  */ 
 246 ]/* Line __line__ of __file__.  */ 
 247 b4_syncline([__oline__
], [__ofile__
]) 
 249 #if ! defined (__cplusplus) 
 259 #ifndef __attribute__ 
 260 /* This feature is available in gcc versions 2.5 and later.  */ 
 261 # if !defined (__GNUC__) || __GNUC__ < 2 || \ 
 262 (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ 
 263 #  define __attribute__(Spec) /* empty */ 
 267 #ifndef ATTRIBUTE_UNUSED 
 268 # define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) 
 271 #if ! defined (__GNUC__) 
 275 /* YYFINAL -- State number of the termination state. */ 
 276 #define YYFINAL  ]b4_final_state_number[ 
 277 /* YYLAST -- Last index in YYTABLE.  */ 
 278 #define YYLAST   ]b4_last[ 
 280 /* YYNTOKENS -- Number of terminals. */ 
 281 #define YYNTOKENS  ]b4_tokens_number[ 
 282 /* YYNNTS -- Number of nonterminals. */ 
 283 #define YYNNTS  ]b4_nterms_number[ 
 284 /* YYNRULES -- Number of rules. */ 
 285 #define YYNRULES  ]b4_rules_number[ 
 286 /* YYNRULES -- Number of states. */ 
 287 #define YYNSTATES  ]b4_states_number[ 
 288 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */ 
 289 #define YYMAXRHS ]b4_r2_max[ 
 291 /* YYTRANSLATE(X) -- Bison symbol number corresponding to X.  */ 
 292 #define YYUNDEFTOK  ]b4_undef_token_number[ 
 293 #define YYMAXUTOK   ]b4_user_token_number_max[ 
 295 #define YYTRANSLATE(YYX) \ 
 296   ((unsigned)(YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 
 298 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */ 
 299 static const ]b4_int_type_for([b4_translate
])[ yytranslate
[] = 
 305 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 
 307 static const ]b4_int_type_for([b4_prhs
])[ yyprhs
[] = 
 312 /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 
 313 static const ]b4_int_type_for([b4_rhs
])[ yyrhs
[] = 
 318 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */ 
 319 static const ]b4_int_type_for([b4_rline
])[ yyrline
[] = 
 325 #if (YYDEBUG) || YYERROR_VERBOSE 
 326 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 
 327    First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 
 328 static const char *const yytname
[] = 
 333 #define yytname_size ((int) (sizeof (yytname) / sizeof (yytname[0]))) 
 336 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */ 
 337 static const ]b4_int_type_for([b4_r1
])[ yyr1
[] = 
 342 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */ 
 343 static const ]b4_int_type_for([b4_r2
])[ yyr2
[] = 
 348 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */ 
 349 static const ]b4_int_type_for([b4_dprec
])[ yydprec
[] = 
 354 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */ 
 355 static const ]b4_int_type_for([b4_merger
])[ yymerger
[] = 
 360 /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE 
 361    doesn't specify something else to do.  Zero means the default is an 
 363 static const ]b4_int_type_for([b4_defact
])[ yydefact
[] = 
 368 /* YYPDEFGOTO[NTERM-NUM]. */ 
 369 static const ]b4_int_type_for([b4_defgoto
])[ yydefgoto
[] = 
 374 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 
 376 #define YYPACT_NINF ]b4_pact_ninf[ 
 377 static const ]b4_int_type_for([b4_pact
])[ yypact
[] = 
 382 /* YYPGOTO[NTERM-NUM].  */ 
 383 static const ]b4_int_type_for([b4_pgoto
])[ yypgoto
[] = 
 388 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If 
 389    positive, shift that token.  If negative, reduce the rule which 
 390    number is the opposite.  If zero, do what YYDEFACT says. 
 391    If YYTABLE_NINF, parse error.  */ 
 392 #define YYTABLE_NINF ]b4_table_ninf[ 
 393 static const ]b4_int_type_for([b4_table
])[ yytable
[] = 
 398 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of 
 399    list of conflicting reductions corresponding to action entry for 
 400    state STATE-NUM in yytable.  0 means no conflicts.  The list in 
 401    yyconfl is terminated by a rule number of 0.  */ 
 402 static const ]b4_int_type_for([b4_conflict_list_heads
])[ yyconflp
[] = 
 404   ]b4_conflict_list_heads
[ 
 407 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by 
 408    0, pointed into by YYCONFLP.  */ 
 409 ]dnl Do 
not use b4_int_type_for here
, since there are places where
 
 410 dnl pointers onto yyconfl are taken
, which type is 
"short *". 
 411 dnl We probably ought to introduce a type 
for confl
. 
 412 [static const short yyconfl
[] = 
 414   ]b4_conflicting_rules
[ 
 417 static const ]b4_int_type_for([b4_check
])[ yycheck
[] = 
 423 /* Prevent warning if -Wmissing-prototypes.  */ 
 424 ]b4_c_ansi_function_decl([yyparse
], [int], b4_parse_param
)[ 
 426 /* Error token number */ 
 429 /* YYLLOC_DEFAULT -- Compute the default location (before the actions 
 432 #define YYRHSLOC(yyRhs,YYK) (yyRhs[YYK].yystate.yyloc) 
 434 #ifndef YYLLOC_DEFAULT 
 435 # define YYLLOC_DEFAULT(yyCurrent, yyRhs, YYN)                  \ 
 436   yyCurrent.first_line   = YYRHSLOC(yyRhs,1).first_line;        \ 
 437   yyCurrent.first_column = YYRHSLOC(yyRhs,1).first_column;      \ 
 438   yyCurrent.last_line    = YYRHSLOC(yyRhs,YYN).last_line;       \ 
 439   yyCurrent.last_column  = YYRHSLOC(yyRhs,YYN).last_column; 
 442 /* YYLEX -- calling `yylex' with the right arguments.  */ 
 443 #define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[ 
 448 #define yynerrs (yystack->yyerrcnt) 
 450 #define yychar (yystack->yyrawchar)], 
 458 static const int YYEOF 
= 0; 
 459 static const int YYEMPTY 
= -2; 
 461 typedef enum { yyok
, yyaccept
, yyabort
, yyerr 
} YYRESULTTAG
; 
 464    do { YYRESULTTAG yyflag = YYE; if (yyflag != yyok) return yyflag; }       \ 
 469 #if ! defined (YYFPRINTF) 
 470 #  define YYFPRINTF fprintf 
 473 # define YYDPRINTF(Args)                        \ 
 478 /* Nonzero means print parse trace.  It is left uninitialized so that 
 479    multiple parsers can coexist.  */ 
 482   /* Avoid empty `if' bodies.  */ 
 483 # define YYDPRINTF(Args)  {} 
 484 #endif /* !YYDEBUG */ 
 486 /* YYINITDEPTH -- initial size of the parser's stacks.  */ 
 488 # define YYINITDEPTH ]b4_stack_depth_init[ 
 491 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 
 492    if the built-in stack extension method is used). 
 494    Do not make this value too large; the results are undefined if 
 495    SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem) 
 496    evaluated with infinite-precision integer arithmetic.  */ 
 503 # define YYMAXDEPTH ]b4_stack_depth_max[ 
 506 /* Minimum number of free items on the stack allowed after an 
 507    allocation.  This is to allow allocation and initialization 
 508    to be completed by functions that call expandGLRStack before the 
 509    stack is expanded, thus insuring that all necessary pointers get 
 510    properly redirected to new data. */ 
 513 #if ! defined (YYSTACKEXPANDABLE) \ 
 514     && (! defined (__cplusplus) || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)) 
 515 #define YYSTACKEXPANDABLE 1 
 517 #define YYSTACKEXPANDABLE 0 
 520 /** State numbers, as in LALR(1) machine */ 
 521 typedef int yyStateNum
; 
 523 /** Rule numbers, as in LALR(1) machine */ 
 524 typedef int yyRuleNum
; 
 526 /** Grammar symbol */ 
 527 typedef short yySymbol
; 
 529 /** Item references, as in LALR(1) machine */ 
 530 typedef short yyItemNum
; 
 532 typedef struct yyGLRState yyGLRState
; 
 533 typedef struct yySemanticOption yySemanticOption
; 
 534 typedef union yyGLRStackItem yyGLRStackItem
; 
 535 typedef struct yyGLRStack yyGLRStack
; 
 536 typedef struct yyGLRStateSet yyGLRStateSet
; 
 541   yyStateNum yylrState
; 
 545     yySemanticOption
* yyfirstVal
; 
 551 struct yyGLRStateSet 
{ 
 552   yyGLRState
** yystates
; 
 553   size_t yysize
, yycapacity
; 
 556 struct yySemanticOption 
{ 
 560   yySemanticOption
* yynext
; 
 563 union yyGLRStackItem 
{ 
 565   yySemanticOption yyoption
; 
 577   jmp_buf yyexception_buffer
; 
 578   yyGLRStackItem
* yyitems
; 
 579   yyGLRStackItem
* yynextFree
; 
 581   yyGLRState
* yysplitPoint
; 
 582   yyGLRState
* yylastDeleted
; 
 583   yyGLRStateSet yytops
; 
 586 static void yyinitGLRStack (yyGLRStack
* yystack
, size_t yysize
); 
 587 static void yyexpandGLRStack (yyGLRStack
* yystack
]b4_pure_formals
[); 
 588 static void yyfreeGLRStack (yyGLRStack
* yystack
); 
 591 yyFail (yyGLRStack
* yystack
]b4_pure_formals
[, const char* yyformat
, ...) 
 593   if (yyformat 
!= NULL
) 
 597       va_start (yyap
, yyformat
); 
 598       yystack
->yyerrflag 
= 1; 
 599       vsprintf (yymsg
, yyformat
, yyap
); 
 600       yyerror (]b4_yyerror_args
[yymsg
); 
 602   longjmp (yystack
->yyexception_buffer
, 1); 
 605 #if YYDEBUG || YYERROR_VERBOSE 
 606 /** A printable representation of TOKEN.  Valid until next call to 
 608 static inline const char* 
 609 yytokenName (yySymbol yytoken
) 
 611   return yytname
[yytoken
]; 
 615 /** Perform user action for rule number YYN, with RHS length YYRHSLEN, 
 616  *  and top stack item YYVSP.  YYLVALP points to place to put semantic 
 617  *  value ($$), and yylocp points to place for location information 
 618  *  (@$). Returns yyok for normal return, yyaccept for YYACCEPT, 
 619  *  yyerr for YYERROR, yyabort for YYABORT. */ 
 621 yyuserAction (yyRuleNum yyn
, int yyrhslen
, yyGLRStackItem
* yyvsp
, 
 622               YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
, yyGLRStack
* yystack
 
 625   /* Avoid `unused' warnings in there are no $n. */ 
 630       *yyvalp 
= yyval_default
; 
 631       *yylocp 
= yyloc_default
; 
 635       *yyvalp 
= yyvsp
[1-yyrhslen
].yystate
.yysemantics
.yysval
; 
 636       *yylocp 
= yyvsp
[1-yyrhslen
].yystate
.yyloc
; 
 639 # define yyval (*yyvalp) 
 641 # define yyerrok (yystack->yyerrState = 0) 
 643 # define YYACCEPT return yyaccept 
 645 # define YYABORT return yyabort 
 647 # define YYERROR return yyerr 
 649 # define YYRECOVERING (yystack->yyerrState != 0) 
 651 # define yyclearin (yychar = *(yystack->yytokenp) = YYEMPTY) 
 653 # define YYBACKUP(Token, Value)                                              \ 
 655     yyerror (]b4_yyerror_args["syntax error: cannot back up");               \ 
 674 /* Line __line__ of __file__.  */ 
 675 b4_syncline([__oline__
], [__ofile__
]) 
 680 yyuserMerge (int yyn
, YYSTYPE
* yy0
, YYSTYPE
* yy1
) 
 682   YYSTYPE yyval 
= *yy0
; 
 683   /* `Use' the arguments.  */ 
 694                               /* Bison grammar-table manipulation.  */ 
 696 /** Number of symbols composing the right hand side of rule #RULE. */ 
 698 yyrhsLength (yyRuleNum yyrule
) 
 703 /** Left-hand-side symbol for rule #RULE. */ 
 704 static inline yySymbol
 
 705 yylhsNonterm (yyRuleNum yyrule
) 
 710 #define yyis_pact_ninf(yystate) \ 
 711   ]m4_if(m4_eval(b4_pact_ninf < b4_pact_min), 1, 
 713          ((yystate
) == YYPACT_NINF
))[ 
 715 /** True iff LR state STATE has only a default reduction (regardless 
 718 yyisDefaultedState (yyStateNum yystate
) 
 720   return yyis_pact_ninf (yypact
[yystate
]); 
 723 /** The default reduction for STATE, assuming it has one. */ 
 724 static inline yyRuleNum
 
 725 yydefaultAction (yyStateNum yystate
) 
 727   return yydefact
[yystate
]; 
 730 #define yyis_table_ninf(yyindex) \ 
 731   ]m4_if(m4_eval(b4_table_ninf < b4_table_min), 1, 
 733          ((yyindex
) == YYTABLE_NINF
))[ 
 735 /** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN. 
 737  *    R < 0:  Reduce on rule -R. 
 739  *    R > 0:  Shift to state R. 
 740  *  Set *CONFLICTS to a pointer into yyconfl to 0-terminated list of 
 741  *  conflicting reductions. 
 744 yygetLRActions (yyStateNum yystate
, int yytoken
, 
 745                 int* yyaction
, const short** yyconflicts
) 
 747   int yyindex 
= yypact
[yystate
] + yytoken
; 
 748   if (yyindex 
< 0 || YYLAST 
< yyindex 
|| yycheck
[yyindex
] != yytoken
) 
 750       *yyaction 
= -yydefact
[yystate
]; 
 751       *yyconflicts 
= yyconfl
; 
 753   else if (! yyis_table_ninf (yyindex
)) 
 755       *yyaction 
= yytable
[yyindex
]; 
 756       *yyconflicts 
= yyconfl 
+ yyconflp
[yyindex
]; 
 761       *yyconflicts 
= yyconfl 
+ yyconflp
[yyindex
]; 
 765 static inline yyStateNum
 
 766 yyLRgotoState (yyStateNum yystate
, yySymbol yylhs
) 
 769   yyr 
= yypgoto
[yylhs 
- YYNTOKENS
] + yystate
; 
 770   if (0 <= yyr 
&& yyr 
<= YYLAST 
&& yycheck
[yyr
] == yystate
) 
 773     return yydefgoto
[yylhs 
- YYNTOKENS
]; 
 777 yyisShiftAction (int yyaction
) 
 783 yyisErrorAction (int yyaction
) 
 785   return yyaction 
== 0; 
 790 /** True iff the semantic value of the edge leading to STATE is 
 793 yyhasResolvedValue (yyGLRState
* yystate
) 
 795   return yystate
->yyresolved
; 
 799 yyaddDeferredAction (yyGLRStack
* yystack
, yyGLRState
* yystate
, 
 800                      yyGLRState
* rhs
, yyRuleNum yyrule
]b4_pure_formals
[) 
 802   yySemanticOption
* yynewItem
; 
 803   yynewItem 
= &yystack
->yynextFree
->yyoption
; 
 804   yystack
->yyspaceLeft 
-= 1; 
 805   yystack
->yynextFree 
+= 1; 
 806   yynewItem
->yyisState 
= yyfalse
; 
 807   yynewItem
->yystate 
= rhs
; 
 808   yynewItem
->yyrule 
= yyrule
; 
 809   yynewItem
->yynext 
= yystate
->yysemantics
.yyfirstVal
; 
 810   yystate
->yysemantics
.yyfirstVal 
= yynewItem
; 
 811   if (yystack
->yyspaceLeft 
< YYHEADROOM
) 
 812     yyexpandGLRStack (yystack
]b4_pure_args
[); 
 817 /** Initialize SET to a singleton set containing an empty stack. */ 
 819 yyinitStateSet (yyGLRStateSet
* yyset
) 
 822   yyset
->yycapacity 
= 16; 
 823   yyset
->yystates 
= (yyGLRState
**) malloc (16 * sizeof (yyset
->yystates
[0])); 
 824   yyset
->yystates
[0] = NULL
; 
 827 static void yyfreeStateSet (yyGLRStateSet
* yyset
) 
 829   free (yyset
->yystates
); 
 832 /** Initialize STACK to a single empty stack, with total maximum 
 833  *  capacity for all stacks of SIZE. */ 
 835 yyinitGLRStack (yyGLRStack
* yystack
, size_t yysize
) 
 837   yystack
->yyerrflag 
= 0; 
 838   yystack
->yyerrState 
= 0; 
 840   yystack
->yyspaceLeft 
= yysize
; 
 841   yystack
->yynextFree 
= yystack
->yyitems 
= 
 842     (yyGLRStackItem
*) malloc (yysize 
* sizeof (yystack
->yynextFree
[0])); 
 843   yystack
->yysplitPoint 
= NULL
; 
 844   yystack
->yylastDeleted 
= NULL
; 
 845   yyinitStateSet (&yystack
->yytops
); 
 848 #define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \ 
 849   &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE 
 851 /** If STACK is expandable, extend it.  WARNING: Pointers into the 
 852     stack from outside should be considered invalid after this call. 
 853     We always expand when there are 1 or fewer items left AFTER an 
 854     allocation, so that we can avoid having external pointers exist 
 855     across an allocation. */ 
 857 yyexpandGLRStack (yyGLRStack
* yystack
]b4_pure_formals
[) 
 859 #if YYSTACKEXPANDABLE 
 860   yyGLRStack yynewStack
; 
 861   yyGLRStackItem
* yyp0
, *yyp1
; 
 862   size_t yysize
, yynewSize
; 
 864   yysize 
= yystack
->yynextFree 
- yystack
->yyitems
; 
 865   if (YYMAXDEPTH 
<= yysize
) 
 866     yyFail (yystack
][]b4_pure_args
[, 
 867             "parsing stack overflow (%d items)", yysize
); 
 868   yynewSize 
= 2*yysize
; 
 869   if (YYMAXDEPTH 
< yynewSize
) 
 870     yynewSize 
= YYMAXDEPTH
; 
 871   yyinitGLRStack (&yynewStack
, yynewSize
); 
 872   for (yyp0 
= yystack
->yyitems
, yyp1 
= yynewStack
.yyitems
, yyn 
= yysize
; 
 874        yyn 
-= 1, yyp0 
+= 1, yyp1 
+= 1) 
 879           yyGLRState
* yys0 
= &yyp0
->yystate
; 
 880           yyGLRState
* yys1 
= &yyp1
->yystate
; 
 881           if (yys0
->yypred 
!= NULL
) 
 883               YYRELOC (yyp0
, yyp1
, yys0
->yypred
, yystate
); 
 884           if (! yys0
->yyresolved 
&& yys0
->yysemantics
.yyfirstVal 
!= NULL
) 
 885             yys1
->yysemantics
.yyfirstVal 
= 
 886               YYRELOC(yyp0
, yyp1
, yys0
->yysemantics
.yyfirstVal
, yyoption
); 
 890           yySemanticOption
* yyv0 
= &yyp0
->yyoption
; 
 891           yySemanticOption
* yyv1 
= &yyp1
->yyoption
; 
 892           if (yyv0
->yystate 
!= NULL
) 
 893             yyv1
->yystate 
= YYRELOC (yyp0
, yyp1
, yyv0
->yystate
, yystate
); 
 894           if (yyv0
->yynext 
!= NULL
) 
 895             yyv1
->yynext 
= YYRELOC (yyp0
, yyp1
, yyv0
->yynext
, yyoption
); 
 898   if (yystack
->yysplitPoint 
!= NULL
) 
 899     yystack
->yysplitPoint 
= YYRELOC (yystack
->yyitems
, yynewStack
.yyitems
, 
 900                                  yystack
->yysplitPoint
, yystate
); 
 902   for (yyn 
= 0; yyn 
< yystack
->yytops
.yysize
; yyn 
+= 1) 
 903     if (yystack
->yytops
.yystates
[yyn
] != NULL
) 
 904       yystack
->yytops
.yystates
[yyn
] = 
 905         YYRELOC (yystack
->yyitems
, yynewStack
.yyitems
, 
 906                  yystack
->yytops
.yystates
[yyn
], yystate
); 
 907   free (yystack
->yyitems
); 
 908   yystack
->yyitems 
= yynewStack
.yyitems
; 
 909   yystack
->yynextFree 
= yynewStack
.yynextFree 
+ yysize
; 
 910   yystack
->yyspaceLeft 
= yynewStack
.yyspaceLeft 
- yysize
; 
 914   yyFail (yystack
][]b4_lpure_args
[, 
 915           "parsing stack overflow (%d items)", yysize
); 
 920 yyfreeGLRStack (yyGLRStack
* yystack
) 
 922   free (yystack
->yyitems
); 
 923   yyfreeStateSet (&yystack
->yytops
); 
 926 /** Assuming that S is a GLRState somewhere on STACK, update the 
 927  *  splitpoint of STACK, if needed, so that it is at least as deep as 
 930 yyupdateSplit (yyGLRStack
* yystack
, yyGLRState
* yys
) 
 932   if (yystack
->yysplitPoint 
!= NULL 
&& yystack
->yysplitPoint 
> yys
) 
 933     yystack
->yysplitPoint 
= yys
; 
 936 /** Invalidate stack #K in STACK. */ 
 938 yymarkStackDeleted (yyGLRStack
* yystack
, int yyk
) 
 940   if (yystack
->yytops
.yystates
[yyk
] != NULL
) 
 941     yystack
->yylastDeleted 
= yystack
->yytops
.yystates
[yyk
]; 
 942   yystack
->yytops
.yystates
[yyk
] = NULL
; 
 945 /** Undelete the last stack that was marked as deleted.  Can only be 
 946     done once after a deletion, and only when all other stacks have 
 949 yyundeleteLastStack (yyGLRStack
* yystack
) 
 951   if (yystack
->yylastDeleted 
== NULL 
|| yystack
->yytops
.yysize 
!= 0) 
 953   yystack
->yytops
.yystates
[0] = yystack
->yylastDeleted
; 
 954   yystack
->yytops
.yysize 
= 1; 
 955   YYDPRINTF ((stderr
, "Restoring last deleted stack as stack #0.\n")); 
 956   yystack
->yylastDeleted 
= NULL
; 
 960 yyremoveDeletes (yyGLRStack
* yystack
) 
 964   while (yyj 
< yystack
->yytops
.yysize
) 
 966       if (yystack
->yytops
.yystates
[yyi
] == NULL
) 
 969             YYDPRINTF ((stderr
, "Removing dead stacks.\n")); 
 970           yystack
->yytops
.yysize 
-= 1; 
 974           yystack
->yytops
.yystates
[yyj
] = yystack
->yytops
.yystates
[yyi
]; 
 976             YYDPRINTF ((stderr
, "Rename stack %d -> %d.\n", yyi
, yyj
)); 
 983 /** Shift to a new state on stack #K of STACK, corresponding to LR state 
 984  * LRSTATE, at input position POSN, with (resolved) semantic value SVAL. */ 
 986 yyglrShift (yyGLRStack
* yystack
, int yyk
, yyStateNum yylrState
, size_t yyposn
, 
 987             YYSTYPE yysval
, YYLTYPE
* yylocp
]b4_user_formals
[) 
 989   yyGLRStackItem
* yynewItem
; 
 991   yynewItem 
= yystack
->yynextFree
; 
 992   yystack
->yynextFree 
+= 1; 
 993   yystack
->yyspaceLeft 
-= 1; 
 994   yynewItem
->yystate
.yyisState 
= yytrue
; 
 995   yynewItem
->yystate
.yylrState 
= yylrState
; 
 996   yynewItem
->yystate
.yyposn 
= yyposn
; 
 997   yynewItem
->yystate
.yyresolved 
= yytrue
; 
 998   yynewItem
->yystate
.yypred 
= yystack
->yytops
.yystates
[yyk
]; 
 999   yystack
->yytops
.yystates
[yyk
] = &yynewItem
->yystate
; 
1000   yynewItem
->yystate
.yysemantics
.yysval 
= yysval
; 
1001   yynewItem
->yystate
.yyloc 
= *yylocp
; 
1002   if (yystack
->yyspaceLeft 
< YYHEADROOM
) 
1003     yyexpandGLRStack (yystack
]b4_pure_args
[); 
1006 /** Shift to a new state on stack #K of STACK, to a new state 
1007  *  corresponding to LR state LRSTATE, at input position POSN, with 
1008  * the (unresolved) semantic value of RHS under the action for RULE. */ 
1010 yyglrShiftDefer (yyGLRStack
* yystack
, int yyk
, yyStateNum yylrState
, 
1011                  size_t yyposn
, yyGLRState
* rhs
, yyRuleNum yyrule
]b4_pure_formals
[) 
1013   yyGLRStackItem
* yynewItem
; 
1015   yynewItem 
= yystack
->yynextFree
; 
1016   yynewItem
->yystate
.yyisState 
= yytrue
; 
1017   yynewItem
->yystate
.yylrState 
= yylrState
; 
1018   yynewItem
->yystate
.yyposn 
= yyposn
; 
1019   yynewItem
->yystate
.yyresolved 
= yyfalse
; 
1020   yynewItem
->yystate
.yypred 
= yystack
->yytops
.yystates
[yyk
]; 
1021   yynewItem
->yystate
.yysemantics
.yyfirstVal 
= NULL
; 
1022   yystack
->yytops
.yystates
[yyk
] = &yynewItem
->yystate
; 
1023   yystack
->yynextFree 
+= 1; 
1024   yystack
->yyspaceLeft 
-= 1; 
1025   yyaddDeferredAction (yystack
, &yynewItem
->yystate
, rhs
, yyrule
]b4_pure_args
[); 
1028 /** Pop the symbols consumed by reduction #RULE from the top of stack 
1029  *  #K of STACK, and perform the appropriate semantic action on their 
1030  *  semantic values.  Assumes that all ambiguities in semantic values 
1031  *  have been previously resolved. Set *VALP to the resulting value, 
1032  *  and *LOCP to the computed location (if any).  Return value is as 
1033  *  for userAction. */ 
1035 yydoAction (yyGLRStack
* yystack
, int yyk
, yyRuleNum yyrule
, 
1036             YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[) 
1038   int yynrhs 
= yyrhsLength (yyrule
); 
1040   if (yystack
->yysplitPoint 
== NULL
) 
1042       /* Standard special case: single stack. */ 
1043       yyGLRStackItem
* rhs 
= (yyGLRStackItem
*) yystack
->yytops
.yystates
[yyk
]; 
1045       yystack
->yynextFree 
-= yynrhs
; 
1046       yystack
->yyspaceLeft 
+= yynrhs
; 
1047       yystack
->yytops
.yystates
[0] = & yystack
->yynextFree
[-1].yystate
; 
1050           *yyvalp 
= yyval_default
; 
1051           *yylocp 
= yyloc_default
; 
1055           *yyvalp 
= rhs
[1-yynrhs
].yystate
.yysemantics
.yysval
; 
1056           *yylocp 
= rhs
[1-yynrhs
].yystate
.yyloc
; 
1058       return yyuserAction (yyrule
, yynrhs
, rhs
, 
1059                            yyvalp
, yylocp
, yystack
]b4_user_args
[); 
1065       yyGLRStackItem yyrhsVals
[YYMAXRHS
]; 
1066       for (yyi 
= yynrhs
-1, yys 
= yystack
->yytops
.yystates
[yyk
]; 0 <= yyi
; 
1067            yyi 
-= 1, yys 
= yys
->yypred
) 
1069           assert (yys
->yypred 
!= NULL
); 
1070           yyrhsVals
[yyi
].yystate
.yyresolved 
= yytrue
; 
1071           yyrhsVals
[yyi
].yystate
.yysemantics
.yysval 
= yys
->yysemantics
.yysval
; 
1072           yyrhsVals
[yyi
].yystate
.yyloc 
= yys
->yyloc
; 
1074       yyupdateSplit (yystack
, yys
); 
1075       yystack
->yytops
.yystates
[yyk
] = yys
; 
1078           *yyvalp 
= yyval_default
; 
1079           *yylocp 
= yyloc_default
; 
1083           *yyvalp 
= yyrhsVals
[0].yystate
.yysemantics
.yysval
; 
1084           *yylocp 
= yyrhsVals
[0].yystate
.yyloc
; 
1086       return yyuserAction (yyrule
, yynrhs
, yyrhsVals 
+ (yynrhs
-1), 
1087                            yyvalp
, yylocp
, yystack
]b4_user_args
[); 
1092 # define YY_REDUCE_PRINT(K, Rule) 
1094 # define YY_REDUCE_PRINT(K, Rule)       \ 
1097     yy_reduce_print (K, Rule);          \ 
1100 /*----------------------------------------------------------. 
1101 | Report that the RULE is going to be reduced on stack #K.  | 
1102 `----------------------------------------------------------*/ 
1105 yy_reduce_print (size_t yyk
, yyRuleNum yyrule
) 
1108   YYDPRINTF ((stderr
, "Reducing stack %d by rule %d (line %d),", 
1109               yyk
, yyrule 
- 1, yyrline
[yyrule
])); 
1110   /* Print the symbols being reduced, and their result.  */ 
1111   for (yyi 
= yyprhs
[yyrule
]; 0 <= yyrhs
[yyi
]; yyi
++) 
1112     YYFPRINTF (stderr
, "%s ", yytokenName (yyrhs
[yyi
])); 
1113   YYFPRINTF (stderr
, " -> %s\n", yytokenName (yyr1
[yyrule
])); 
1117 /** Pop items off stack #K of STACK according to grammar rule RULE, 
1118  *  and push back on the resulting nonterminal symbol.  Perform the 
1119  *  semantic action associated with RULE and store its value with the 
1120  *  newly pushed state, if FORCEEVAL or if STACK is currently 
1121  *  unambiguous.  Otherwise, store the deferred semantic action with 
1122  *  the new state.  If the new state would have an identical input 
1123  *  position, LR state, and predecessor to an existing state on the stack, 
1124  *  it is identified with that existing state, eliminating stack #K from 
1125  *  the STACK. In this case, the (necessarily deferred) semantic value is 
1126  *  added to the options for the existing state's semantic value. 
1128 static inline YYRESULTTAG
 
1129 yyglrReduce (yyGLRStack
* yystack
, size_t yyk
, yyRuleNum yyrule
, 
1130              bool yyforceEval
]b4_pure_formals
[) 
1132   size_t yyposn 
= yystack
->yytops
.yystates
[yyk
]->yyposn
; 
1134   if (yyforceEval 
|| yystack
->yysplitPoint 
== NULL
) 
1139       YY_REDUCE_PRINT (yyk
, yyrule
); 
1140       YYCHK (yydoAction (yystack
, yyk
, yyrule
, &yysval
, &yyloc
]b4_user_args
[)); 
1141       yyglrShift (yystack
, yyk
, 
1142                   yyLRgotoState (yystack
->yytops
.yystates
[yyk
]->yylrState
, 
1143                                  yylhsNonterm (yyrule
)), 
1144                   yyposn
, yysval
, &yyloc
]b4_user_args
[); 
1145       YYDPRINTF ((stderr
, "Stack %d entering state %d\n", 
1146                   yyk
, yystack
->yytops
.yystates
[yyk
]->yylrState
)); 
1152       yyGLRState
* yys
, *yys0 
= yystack
->yytops
.yystates
[yyk
]; 
1153       yyStateNum yynewLRState
; 
1155       for (yys 
= yystack
->yytops
.yystates
[yyk
], yyn 
= yyrhsLength (yyrule
); 
1159           assert (yys 
!= NULL
); 
1161       yyupdateSplit (yystack
, yys
); 
1162       yynewLRState 
= yyLRgotoState (yys
->yylrState
, yylhsNonterm (yyrule
)); 
1164                   "Reduced stack %d by rule #%d; action deferred. " 
1165                   "Now in state %d.\n", 
1166                   yyk
, yyrule
-1, yynewLRState
)); 
1167       for (yyi 
= 0; yyi 
< yystack
->yytops
.yysize
; yyi 
+= 1) 
1168         if (yyi 
!= yyk 
&& yystack
->yytops
.yystates
[yyi
] != NULL
) 
1170             yyGLRState
* yyp
, *yysplit 
= yystack
->yysplitPoint
; 
1171             yyp 
= yystack
->yytops
.yystates
[yyi
]; 
1172             while (yyp 
!= yys 
&& yyp 
!= yysplit 
&& yyp
->yyposn 
>= yyposn
) 
1174                 if (yyp
->yylrState 
== yynewLRState 
&& yyp
->yypred 
== yys
) 
1176                     yyaddDeferredAction (yystack
, yyp
, yys0
, yyrule
]b4_pure_args
[); 
1177                     yymarkStackDeleted (yystack
, yyk
); 
1178                     YYDPRINTF ((stderr
, "Merging stack %d into stack %d.\n", 
1185       yystack
->yytops
.yystates
[yyk
] = yys
; 
1186       yyglrShiftDefer (yystack
, yyk
, yynewLRState
, yyposn
, yys0
, yyrule
]b4_pure_args
[); 
1192 yysplitStack (yyGLRStack
* yystack
, int yyk
) 
1194   if (yystack
->yysplitPoint 
== NULL
) 
1197       yystack
->yysplitPoint 
= yystack
->yytops
.yystates
[yyk
]; 
1199   if (yystack
->yytops
.yysize 
>= yystack
->yytops
.yycapacity
) 
1201       yystack
->yytops
.yycapacity 
*= 2; 
1202       yystack
->yytops
.yystates 
= 
1203         (yyGLRState
**) realloc (yystack
->yytops
.yystates
, 
1204                                 yystack
->yytops
.yycapacity
 
1205                                 * sizeof (yyGLRState
*)); 
1207   yystack
->yytops
.yystates
[yystack
->yytops
.yysize
] 
1208     = yystack
->yytops
.yystates
[yyk
]; 
1209   yystack
->yytops
.yysize 
+= 1; 
1210   return yystack
->yytops
.yysize
-1; 
1213 /** True iff Y0 and Y1 represent identical options at the top level. 
1214  *  That is, they represent the same rule applied to RHS symbols 
1215  *  that produce the same terminal symbols. */ 
1217 yyidenticalOptions (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
) 
1219   if (yyy0
->yyrule 
== yyy1
->yyrule
) 
1221       yyGLRState 
*yys0
, *yys1
; 
1223       for (yys0 
= yyy0
->yystate
, yys1 
= yyy1
->yystate
, 
1224            yyn 
= yyrhsLength (yyy0
->yyrule
); 
1226            yys0 
= yys0
->yypred
, yys1 
= yys1
->yypred
, yyn 
-= 1) 
1227         if (yys0
->yyposn 
!= yys1
->yyposn
) 
1235 /** Assuming identicalOptions (Y0,Y1), (destructively) merge the 
1236  *  alternative semantic values for the RHS-symbols of Y1 into the 
1237  *  corresponding semantic value sets of the symbols of Y0. */ 
1239 yymergeOptionSets (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
) 
1241   yyGLRState 
*yys0
, *yys1
; 
1243   for (yys0 
= yyy0
->yystate
, yys1 
= yyy1
->yystate
, 
1244        yyn 
= yyrhsLength (yyy0
->yyrule
); 
1246        yys0 
= yys0
->yypred
, yys1 
= yys1
->yypred
, yyn 
-= 1) 
1249     else if (! yys0
->yyresolved 
&& ! yys1
->yyresolved
) 
1251         yySemanticOption
* yyz
; 
1252         for (yyz 
= yys0
->yysemantics
.yyfirstVal
; yyz
->yynext 
!= NULL
; 
1255         yyz
->yynext 
= yys1
->yysemantics
.yyfirstVal
; 
1259 /** Y0 and Y1 represent two possible actions to take in a given 
1260  *  parsing state; return 0 if no combination is possible, 
1261  *  1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */ 
1263 yypreference (yySemanticOption
* y0
, yySemanticOption
* y1
) 
1265   yyRuleNum r0 
= y0
->yyrule
, r1 
= y1
->yyrule
; 
1266   int p0 
= yydprec
[r0
], p1 
= yydprec
[r1
]; 
1270       if (yymerger
[r0
] == 0 || yymerger
[r0
] != yymerger
[r1
]) 
1275   if (p0 
== 0 || p1 
== 0) 
1284 static YYRESULTTAG 
yyresolveValue (yySemanticOption
* yyoptionList
, 
1285                                    yyGLRStack
* yystack
, YYSTYPE
* yyvalp
, 
1286                                    YYLTYPE
* yylocp
]b4_user_formals
[); 
1289 yyresolveStates (yyGLRState
* yys
, int yyn
, yyGLRStack
* yystack
]b4_user_formals
[) 
1294       assert (yys
->yypred 
!= NULL
); 
1295       yyflag 
= yyresolveStates (yys
->yypred
, yyn
-1, yystack
]b4_user_args
[); 
1298       if (! yys
->yyresolved
) 
1300           yyflag 
= yyresolveValue (yys
->yysemantics
.yyfirstVal
, yystack
, 
1301                                    &yys
->yysemantics
.yysval
, &yys
->yyloc
 
1305           yys
->yyresolved 
= yytrue
; 
1312 yyresolveAction (yySemanticOption
* yyopt
, yyGLRStack
* yystack
, 
1313                  YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[) 
1315   yyGLRStackItem yyrhsVals
[YYMAXRHS
]; 
1319   yynrhs 
= yyrhsLength (yyopt
->yyrule
); 
1320   YYCHK (yyresolveStates (yyopt
->yystate
, yynrhs
, yystack
]b4_user_args
[)); 
1321   for (yyi 
= yynrhs
-1, yys 
= yyopt
->yystate
; 0 <= yyi
; 
1322        yyi 
-= 1, yys 
= yys
->yypred
) 
1324       assert (yys
->yypred 
!= NULL
); 
1325       yyrhsVals
[yyi
].yystate
.yyresolved 
= yytrue
; 
1326       yyrhsVals
[yyi
].yystate
.yysemantics
.yysval 
= yys
->yysemantics
.yysval
; 
1327       yyrhsVals
[yyi
].yystate
.yyloc 
= yys
->yyloc
; 
1329   return yyuserAction (yyopt
->yyrule
, yynrhs
, yyrhsVals 
+ (yynrhs
-1), 
1330                        yyvalp
, yylocp
, yystack
]b4_user_args
[); 
1335 yyreportTree (yySemanticOption
* yyx
, int yyindent
) 
1337   int yynrhs 
= yyrhsLength (yyx
->yyrule
); 
1340   yyGLRState
* yystates
[YYMAXRHS
]; 
1341   yyGLRState yyleftmost_state
; 
1343   for (yyi 
= yynrhs
, yys 
= yyx
->yystate
; 0 < yyi
; yyi 
-= 1, yys 
= yys
->yypred
) 
1344     yystates
[yyi
] = yys
; 
1347       yyleftmost_state
.yyposn 
= 0; 
1348       yystates
[0] = &yyleftmost_state
; 
1353   if (yyx
->yystate
->yyposn 
< yys
->yyposn 
+ 1) 
1354     YYFPRINTF (stderr
, "%*s%s -> <Rule %d, empty>\n", 
1355                yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)), 
1358     YYFPRINTF (stderr
, "%*s%s -> <Rule %d, tokens %d .. %d>\n", 
1359                yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)), 
1360                yyx
->yyrule
, yys
->yyposn
+1, yyx
->yystate
->yyposn
); 
1361   for (yyi 
= 1; yyi 
<= yynrhs
; yyi 
+= 1) 
1363       if (yystates
[yyi
]->yyresolved
) 
1365           if (yystates
[yyi
-1]->yyposn
+1 > yystates
[yyi
]->yyposn
) 
1366             YYFPRINTF (stderr
, "%*s%s <empty>\n", yyindent
+2, "", 
1367                        yytokenName (yyrhs
[yyprhs
[yyx
->yyrule
]+yyi
-1])); 
1369             YYFPRINTF (stderr
, "%*s%s <tokens %d .. %d>\n", yyindent
+2, "", 
1370                        yytokenName (yyrhs
[yyprhs
[yyx
->yyrule
]+yyi
-1]), 
1371                        yystates
[yyi
-1]->yyposn
+1, yystates
[yyi
]->yyposn
); 
1374         yyreportTree (yystates
[yyi
]->yysemantics
.yyfirstVal
, yyindent
+2); 
1380 yyreportAmbiguity (yySemanticOption
* yyx0
, yySemanticOption
* yyx1
, 
1381                    yyGLRStack
* yystack
]b4_pure_formals
[) 
1383   /* `Unused' warnings.  */ 
1388   YYFPRINTF (stderr
, "Ambiguity detected.\n"); 
1389   YYFPRINTF (stderr
, "Option 1,\n"); 
1390   yyreportTree (yyx0
, 2); 
1391   YYFPRINTF (stderr
, "\nOption 2,\n"); 
1392   yyreportTree (yyx1
, 2); 
1393   YYFPRINTF (stderr
, "\n"); 
1395   yyFail (yystack
][]b4_pure_args
[, "ambiguity detected"); 
1399 /** Resolve the ambiguity represented by OPTIONLIST, perform the indicated 
1400  *  actions, and return the result. */ 
1402 yyresolveValue (yySemanticOption
* yyoptionList
, yyGLRStack
* yystack
, 
1403                 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[) 
1405   yySemanticOption
* yybest
; 
1406   yySemanticOption
* yyp
; 
1409   yybest 
= yyoptionList
; 
1411   for (yyp 
= yyoptionList
->yynext
; yyp 
!= NULL
; yyp 
= yyp
->yynext
) 
1413       if (yyidenticalOptions (yybest
, yyp
)) 
1414         yymergeOptionSets (yybest
, yyp
); 
1416         switch (yypreference (yybest
, yyp
)) 
1419             yyreportAmbiguity (yybest
, yyp
, yystack
]b4_pure_args
[); 
1435       int yyprec 
= yydprec
[yybest
->yyrule
]; 
1436       YYCHK (yyresolveAction (yybest
, yystack
, yyvalp
, yylocp
]b4_user_args
[)); 
1437       for (yyp 
= yybest
->yynext
; yyp 
!= NULL
; yyp 
= yyp
->yynext
) 
1439           if (yyprec 
== yydprec
[yyp
->yyrule
]) 
1443               YYCHK (yyresolveAction (yyp
, yystack
, &yyval1
, &yydummy
]b4_user_args
[)); 
1444               *yyvalp 
= yyuserMerge (yymerger
[yyp
->yyrule
], yyvalp
, &yyval1
); 
1450     return yyresolveAction (yybest
, yystack
, yyvalp
, yylocp
]b4_user_args
[); 
1454 yyresolveStack (yyGLRStack
* yystack
]b4_user_formals
[) 
1456   if (yystack
->yysplitPoint 
!= NULL
) 
1461       for (yyn 
= 0, yys 
= yystack
->yytops
.yystates
[0]; 
1462            yys 
!= yystack
->yysplitPoint
; 
1463            yys 
= yys
->yypred
, yyn 
+= 1) 
1465       YYCHK (yyresolveStates (yystack
->yytops
.yystates
[0], yyn
, yystack
 
1472 yycompressStack (yyGLRStack
* yystack
) 
1474   yyGLRState
* yyp
, *yyq
, *yyr
; 
1476   if (yystack
->yytops
.yysize 
!= 1 || yystack
->yysplitPoint 
== NULL
) 
1479   for (yyp 
= yystack
->yytops
.yystates
[0], yyq 
= yyp
->yypred
, yyr 
= NULL
; 
1480        yyp 
!= yystack
->yysplitPoint
; 
1481        yyr 
= yyp
, yyp 
= yyq
, yyq 
= yyp
->yypred
) 
1484   yystack
->yyspaceLeft 
+= yystack
->yynextFree 
- yystack
->yyitems
; 
1485   yystack
->yynextFree 
= ((yyGLRStackItem
*) yystack
->yysplitPoint
) + 1; 
1486   yystack
->yyspaceLeft 
-= yystack
->yynextFree 
- yystack
->yyitems
; 
1487   yystack
->yysplitPoint 
= NULL
; 
1488   yystack
->yylastDeleted 
= NULL
; 
1492       yystack
->yynextFree
->yystate 
= *yyr
; 
1494       yystack
->yynextFree
->yystate
.yypred 
= & yystack
->yynextFree
[-1].yystate
; 
1495       yystack
->yytops
.yystates
[0] = &yystack
->yynextFree
->yystate
; 
1496       yystack
->yynextFree 
+= 1; 
1497       yystack
->yyspaceLeft 
-= 1; 
1502 yyprocessOneStack (yyGLRStack
* yystack
, int yyk
, 
1503                    size_t yyposn
, YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
 
1507   const short* yyconflicts
; 
1509   yySymbol
* const yytokenp 
= yystack
->yytokenp
; 
1511   while (yystack
->yytops
.yystates
[yyk
] != NULL
) 
1513       yyStateNum yystate 
= yystack
->yytops
.yystates
[yyk
]->yylrState
; 
1515       assert (yystate 
!= YYFINAL
); 
1516       if (yyisDefaultedState (yystate
)) 
1518           yyrule 
= yydefaultAction (yystate
); 
1521               YYDPRINTF ((stderr
, "Stack %d dies.\n", yyk
)); 
1522               yymarkStackDeleted (yystack
, yyk
); 
1525           YYCHK (yyglrReduce (yystack
, yyk
, yyrule
, yyfalse
]b4_lpure_args
[)); 
1529           if (*yytokenp 
== YYEMPTY
) 
1531               YYDPRINTF ((stderr
, "Reading a token: ")); 
1533               *yytokenp 
= YYTRANSLATE(yychar
); 
1534               YYDPRINTF ((stderr
, "Next token is %s\n", 
1535                           yytokenName (*yytokenp
))); 
1537           yygetLRActions (yystate
, *yytokenp
, &yyaction
, &yyconflicts
); 
1539           while (*yyconflicts 
!= 0) 
1541               int yynewStack 
= yysplitStack (yystack
, yyk
); 
1542               YYDPRINTF ((stderr
, "Splitting off stack %d from %d.\n", 
1544               YYCHK (yyglrReduce (yystack
, yynewStack
, 
1545                                   *yyconflicts
, yyfalse
]b4_lpure_args
[)); 
1546               YYCHK (yyprocessOneStack (yystack
, yynewStack
, yyposn
, 
1547                                         yylvalp
, yyllocp
]b4_user_args
[)); 
1551           if (yyisShiftAction (yyaction
)) 
1553               YYDPRINTF ((stderr
, "Shifting token %s on stack %d, ", 
1554                           yytokenName (*yytokenp
), yyk
)); 
1555               yyglrShift (yystack
, yyk
, yyaction
, yyposn
+1, 
1556                           *yylvalp
, yyllocp
]b4_user_args
[); 
1557               YYDPRINTF ((stderr
, "which is now in state #%d\n", 
1558                           yystack
->yytops
.yystates
[yyk
]->yylrState
)); 
1561           else if (yyisErrorAction (yyaction
)) 
1563               YYDPRINTF ((stderr
, "Stack %d dies.\n", yyk
)); 
1564               yymarkStackDeleted (yystack
, yyk
); 
1568             YYCHK (yyglrReduce (yystack
, yyk
, -yyaction
, yyfalse
]b4_lpure_args
[)); 
1575 yyreportParseError (yyGLRStack
* yystack
, 
1576                     YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
]b4_user_formals
[) 
1578   /* `Unused' warnings. */ 
1582   if (yystack
->yyerrState 
== 0) 
1585       yySymbol
* const yytokenp 
= yystack
->yytokenp
; 
1586       int yyn
, yyx
, yycount
; 
1588       const char* yyprefix
; 
1591       yyn 
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
]; 
1592       if (YYPACT_NINF 
< yyn 
&& yyn 
< YYLAST
) 
1595           /* Start YYX at -YYN if negative to avoid negative indexes in 
1597           yysize 
= sizeof ("parse error, unexpected ") 
1598             + strlen (yytokenName (*yytokenp
)); 
1599           yyprefix 
= ", expecting "; 
1600           for (yyx 
= yyn 
< 0 ? -yyn 
: 0; yyx 
< yytname_size 
&& yycount 
<= 5; 
1602             if (yycheck
[yyx 
+ yyn
] == yyx 
&& yyx 
!= YYTERROR
) 
1603               yysize 
+= strlen (yytokenName (yyx
)) + strlen (yyprefix
), 
1604                 yycount 
+= 1, yyprefix 
= " or "; 
1605           yymsg 
= yyp 
= (char*) malloc (yysize
); 
1606           sprintf (yyp
, "parse error, unexpected %s", 
1607                    yytokenName (*yytokenp
)); 
1608           yyp 
+= strlen (yyp
); 
1611               yyprefix 
= ", expecting "; 
1612               for (yyx 
= yyn 
< 0 ? -yyn 
: 0; yyx 
< yytname_size
; yyx 
+= 1) 
1613                 if (yycheck
[yyx 
+ yyn
] == yyx 
&& yyx 
!= YYTERROR
) 
1615                     sprintf (yyp
, "%s%s", yyprefix
, yytokenName (yyx
)); 
1616                     yyp 
+= strlen (yyp
); 
1620           yyerror (]b4_lyyerror_args
[yymsg
); 
1625         yyerror (]b4_lyyerror_args
["parse error"); 
1630 /* Recover from a syntax error on YYSTACK, assuming that YYTOKENP, 
1631    YYLVALP, and YYLLOCP point to the syntactic category, semantic 
1632    value, and location of the lookahead.  */ 
1634 yyrecoverParseError (yyGLRStack
* yystack
, 
1635                      YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
]b4_user_formals
[) 
1637   yySymbol
* const yytokenp 
= yystack
->yytokenp
; 
1641   if (yystack
->yyerrState 
== 0) 
1642     yystack
->yyerrState 
= 3; 
1643   else if (yystack
->yyerrState 
== 3) 
1644     /* We just shifted the error token and (perhaps) took some 
1645        reductions.  Skip tokens until we can proceed.  */ 
1648         if (*yytokenp 
== YYEOF
) 
1649           yyFail (yystack
][]b4_lpure_args
[, NULL
); 
1650         if (*yytokenp 
!= YYEMPTY
) 
1651           YYDPRINTF ((stderr
, "Discarding token %s\n", 
1652                       yytokenName (*yytokenp
))); 
1653         YYDPRINTF ((stderr
, "Reading a token: ")); 
1655         *yytokenp 
= YYTRANSLATE (yychar
); 
1656         YYDPRINTF ((stderr
, "Next token is %s\n", yytokenName (*yytokenp
))); 
1657         yyj 
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
]; 
1658         if (yyis_pact_ninf (yyj
)) 
1659           /* Something's not right; we shouldn't be here.  */ 
1660           yyFail (yystack
][]b4_lpure_args
[, NULL
); 
1662         if (yyj 
< 0 || YYLAST 
< yyj 
|| yycheck
[yyj
] != *yytokenp
) 
1664             if (yydefact
[yystack
->yytops
.yystates
[0]->yylrState
] != 0) 
1667         else if (yytable
[yyj
] != 0 && ! yyis_table_ninf (yytable
[yyj
])) 
1671   /* Reduce to one stack.  */ 
1672   for (yyk 
= 0; yyk 
< yystack
->yytops
.yysize
; yyk 
+= 1) 
1673     if (yystack
->yytops
.yystates
[yyk
] != NULL
) 
1675   if (yyk 
>= yystack
->yytops
.yysize
) 
1676     yyFail (yystack
][]b4_lpure_args
[, NULL
); 
1677   for (yyk 
+= 1; yyk 
< yystack
->yytops
.yysize
; yyk 
+= 1) 
1678     yymarkStackDeleted (yystack
, yyk
); 
1679   yyremoveDeletes (yystack
); 
1680   yycompressStack (yystack
); 
1682   /* Now pop stack until we find a state that shifts the error token. */ 
1683   while (yystack
->yytops
.yystates
[0] != NULL
) 
1685       yyj 
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
]; 
1686       if (! yyis_pact_ninf (yyj
)) 
1689           if (0 <= yyj 
&& yyj 
<= YYLAST 
&& yycheck
[yyj
] == YYTERROR
 
1690               && yyisShiftAction (yytable
[yyj
])) 
1692               yyglrShift (yystack
, 0, yytable
[yyj
], 
1693                           yystack
->yytops
.yystates
[0]->yyposn
, 
1694                           *yylvalp
, yyllocp
]b4_user_args
[); 
1698       yystack
->yytops
.yystates
[0] = yystack
->yytops
.yystates
[0]->yypred
; 
1699       yystack
->yynextFree 
-= 1; 
1700       yystack
->yyspaceLeft 
+= 1; 
1702   if (yystack
->yytops
.yystates
[0] == NULL
) 
1703     yyFail (yystack
][]b4_lpure_args
[, NULL
); 
1706 #define YYCHK1(YYE)                                                          \ 
1712       yystack.yyerrflag = 1;                                                 \ 
1715       yystack.yyerrflag = 0;                                                 \ 
1718       goto yyuser_error;                                                     \ 
1727 ]b4_c_ansi_function_def([yyparse
], [int], b4_parse_param
)[ 
1737   #define yychar (yystack.yyrawchar) 
1740   YYSTYPE
* const yylvalp 
= &yylval
; 
1741   YYLTYPE
* const yyllocp 
= &yylloc
; 
1743   yyinitGLRStack (&yystack
, YYINITDEPTH
); 
1744   yystack
.yytokenp 
= &yytoken
; 
1746   YYDPRINTF ((stderr
, "Starting parse\n")); 
1748   if (setjmp (yystack
.yyexception_buffer
) != 0) 
1751   yyglrShift (&yystack
, 0, 0, 0, yyval_default
, &yyloc_default
]b4_user_args
[); 
1757       /* For efficiency, we have two loops, the first of which is 
1758          specialized to deterministic operation (single stack, no 
1759          potential ambiguity).  */ 
1766           const short* yyconflicts
; 
1768           yyStateNum yystate 
= yystack
.yytops
.yystates
[0]->yylrState
; 
1769           if (yystate 
== YYFINAL
) 
1771           if (yyisDefaultedState (yystate
)) 
1773               yyrule 
= yydefaultAction (yystate
); 
1776                   yyreportParseError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[); 
1779               YYCHK1 (yyglrReduce (&yystack
, 0, yyrule
, yytrue
]b4_lpure_args
[)); 
1783               if (yytoken 
== YYEMPTY
) 
1785                   YYDPRINTF ((stderr
, "Reading a token: ")); 
1787                   yytoken 
= YYTRANSLATE (yychar
); 
1788                   YYDPRINTF ((stderr
, "Next token is %s\n", 
1789                               yytokenName (yytoken
))); 
1791               yygetLRActions (yystate
, yytoken
, &yyaction
, &yyconflicts
); 
1792               if (*yyconflicts 
!= 0) 
1794               if (yyisShiftAction (yyaction
)) 
1796                   YYDPRINTF ((stderr
, "Shifting token %s, ", 
1797                               yytokenName (yytoken
))); 
1798                   if (yytoken 
!= YYEOF
) 
1801                   yyglrShift (&yystack
, 0, yyaction
, yyposn
, 
1802                               yylval
, yyllocp
]b4_user_args
[); 
1803                   if (0 < yystack
.yyerrState
) 
1804                     yystack
.yyerrState 
-= 1; 
1805                   YYDPRINTF ((stderr
, "Entering state %d\n", 
1806                               yystack
.yytops
.yystates
[0]->yylrState
)); 
1808               else if (yyisErrorAction (yyaction
)) 
1810                   yyreportParseError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[); 
1814                 YYCHK1 (yyglrReduce (&yystack
, 0, -yyaction
, yytrue
]b4_lpure_args
[)); 
1821           int yyn 
= yystack
.yytops
.yysize
; 
1822           for (yys 
= 0; yys 
< yyn
; yys 
+= 1) 
1823             YYCHK1 (yyprocessOneStack (&yystack
, yys
, yyposn
, 
1824                                        yylvalp
, yyllocp
]b4_user_args
[)); 
1827           yyremoveDeletes (&yystack
); 
1828           if (yystack
.yytops
.yysize 
== 0) 
1830               yyundeleteLastStack (&yystack
); 
1831               if (yystack
.yytops
.yysize 
== 0) 
1832                 yyFail (&yystack
][]b4_lpure_args
[, "parse error"); 
1833               YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[)); 
1834               YYDPRINTF ((stderr
, "Returning to deterministic operation.\n")); 
1835               yyreportParseError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[); 
1838           else if (yystack
.yytops
.yysize 
== 1) 
1840               YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[)); 
1841               YYDPRINTF ((stderr
, "Returning to deterministic operation.\n")); 
1842               yycompressStack (&yystack
); 
1848       yyrecoverParseError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[); 
1849       yyposn 
= yystack
.yytops
.yystates
[0]->yyposn
; 
1854   yyfreeGLRStack (&yystack
); 
1855   return yystack
.yyerrflag
; 
1858 /* DEBUGGING ONLY */ 
1859 static void yypstack (yyGLRStack
* yystack
, int yyk
) ATTRIBUTE_UNUSED
; 
1860 static void yypdumpstack (yyGLRStack
* yystack
) ATTRIBUTE_UNUSED
; 
1863 yy_yypstack (yyGLRState
* yys
) 
1867       yy_yypstack (yys
->yypred
); 
1868       fprintf (stderr
, " -> "); 
1870   fprintf (stderr
, "%d@%lu", yys
->yylrState
, (unsigned long) yys
->yyposn
); 
1874 yypstates (yyGLRState
* yyst
) 
1877     fprintf (stderr
, "<null>"); 
1880   fprintf (stderr
, "\n"); 
1884 yypstack (yyGLRStack
* yystack
, int yyk
) 
1886   yypstates (yystack
->yytops
.yystates
[yyk
]); 
1889 #define YYINDEX(YYX)                                                         \ 
1890     ((YYX) == NULL ? -1 : (yyGLRStackItem*) (YYX) - yystack->yyitems) 
1894 yypdumpstack (yyGLRStack
* yystack
) 
1896   yyGLRStackItem
* yyp
; 
1898   for (yyp 
= yystack
->yyitems
; yyp 
< yystack
->yynextFree
; yyp 
+= 1) 
1900       fprintf (stderr
, "%3lu. ", (unsigned long) (yyp 
- yystack
->yyitems
)); 
1903           fprintf (stderr
, "Res: %d, LR State: %d, posn: %lu, pred: %ld", 
1904                    yyp
->yystate
.yyresolved
, yyp
->yystate
.yylrState
, 
1905                    (unsigned long) yyp
->yystate
.yyposn
, 
1906                    (long) YYINDEX (yyp
->yystate
.yypred
)); 
1907           if (! yyp
->yystate
.yyresolved
) 
1908             fprintf (stderr
, ", firstVal: %ld", 
1909                      (long) YYINDEX (yyp
->yystate
.yysemantics
.yyfirstVal
)); 
1913           fprintf (stderr
, "Option. rule: %d, state: %ld, next: %ld", 
1914                    yyp
->yyoption
.yyrule
, 
1915                    (long) YYINDEX (yyp
->yyoption
.yystate
), 
1916                    (long) YYINDEX (yyp
->yyoption
.yynext
)); 
1918       fprintf (stderr
, "\n"); 
1920   fprintf (stderr
, "Tops:"); 
1921   for (yyi 
= 0; yyi 
< yystack
->yytops
.yysize
; yyi 
+= 1) 
1922     fprintf (stderr
, "%lu: %ld; ", (unsigned long) yyi
, 
1923              (long) YYINDEX (yystack
->yytops
.yystates
[yyi
])); 
1924   fprintf (stderr
, "\n"); 
1929 m4_if(b4_defines_flag
, 0, [], 
1930 [#output "b4_output_header_name" 
1931 b4_copyright([Skeleton parser 
for GLR parsing with Bison
], [2002]) 
1932 #ifndef b4_header_guard 
1933 # define b4_header_guard 
1935 b4_token_defines(b4_tokens
) 
1938 m4_ifdef([b4_stype
], 
1939 [b4_syncline([b4_stype_line
], [b4_filename
]) 
1940 typedef union b4_stype yystype
; 
1941 /* Line __line__ of __file__.  */ 
1942 b4_syncline([__oline__
], [__ofile__
])], 
1943 [typedef int yystype
;]) 
1944 # define YYSTYPE yystype 
1948 [extern YYSTYPE b4_prefix
[]lval
;]) 
1952 typedef struct yyltype
 
1959 # define YYLTYPE yyltype 
1963 [extern YYLTYPE b4_prefix
[]lloc
;]) 
1965 #endif /* not b4_header_guard */