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
]) 
 141 # We do want M4 expansion after # for CPP macros. 
 144 @output @output_parser_name@
 
 145 b4_copyright([Skeleton parser 
for GLR parsing with Bison
], [2002]) 
 147 /* This is the parser code for GLR (Generalized LR) parser. */ 
 157 m4_if(b4_prefix
[], [yy
], [], 
 158 [/* If NAME_PREFIX is specified substitute the variables and functions 
 160 #define yyparse b4_prefix[]parse 
 161 #define yylex   b4_prefix[]lex 
 162 #define yyerror b4_prefix[]error 
 163 #define yylval  b4_prefix[]lval 
 164 #define yychar  b4_prefix[]char 
 165 #define yydebug b4_prefix[]debug 
 166 #define yynerrs b4_prefix[]nerrs 
 167 b4_location_if([#define yylloc b4_prefix[]lloc])]) 
 169 b4_token_defines(b4_tokens
) 
 171 /* Copy the first part of user declarations.  */ 
 174 /* Enabling traces.  */ 
 176 # define YYDEBUG ]b4_debug[ 
 179 /* Enabling verbose error messages.  */ 
 180 #ifdef YYERROR_VERBOSE 
 181 # undef YYERROR_VERBOSE 
 182 # define YYERROR_VERBOSE 1 
 184 # define YYERROR_VERBOSE ]b4_error_verbose[ 
 188 ]m4_ifdef([b4_stype
], 
 189 [b4_syncline([b4_stype_line
], [b4_filename
]) 
 190 typedef union b4_stype yystype
; 
 191 /* Line __line__ of __file__.  */ 
 192 b4_syncline([@oline@
], [@ofile@
])], 
 193 [typedef int yystype
;])[ 
 194 # define YYSTYPE yystype 
 195 # define YYSTYPE_IS_TRIVIAL 1 
 199 typedef struct yyltype
 
 206 # define YYLTYPE ]b4_location_type[ 
 207 # define YYLTYPE_IS_TRIVIAL 1 
 210 /* Default (constant) values used for initialization for null 
 211    right-hand sides.  Unlike the standard bison.simple template, 
 212    here we set the default values of $$ and $@@ to zeroed-out 
 213    values.  Since the default value of these quantities is undefined, 
 214    this behavior is technically correct. */ 
 215 static YYSTYPE yyval_default
; 
 216 static YYLTYPE yyloc_default
; 
 218 /* Copy the second part of user declarations.  */ 
 221 ]/* Line __line__ of __file__.  */ 
 222 b4_syncline([@oline@
], [@ofile@
]) 
 224 #if ! defined (__cplusplus) 
 234 #ifndef __attribute__ 
 235 /* This feature is available in gcc versions 2.5 and later.  */ 
 236 # if !defined (__GNUC__) || __GNUC__ < 2 || \ 
 237 (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ 
 238 #  define __attribute__(Spec) /* empty */ 
 242 #ifndef ATTRIBUTE_UNUSED 
 243 # define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) 
 246 /* YYFINAL -- State number of the termination state. */ 
 247 #define YYFINAL  ]b4_final_state_number[ 
 248 /* YYLAST -- Last index in YYTABLE.  */ 
 249 #define YYLAST   ]b4_last[ 
 251 /* YYNTOKENS -- Number of terminals. */ 
 252 #define YYNTOKENS  ]b4_tokens_number[ 
 253 /* YYNNTS -- Number of nonterminals. */ 
 254 #define YYNNTS  ]b4_nterms_number[ 
 255 /* YYNRULES -- Number of rules. */ 
 256 #define YYNRULES  ]b4_rules_number[ 
 257 /* YYNRULES -- Number of states. */ 
 258 #define YYNSTATES  ]b4_states_number[ 
 259 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */ 
 260 #define YYMAXRHS ]b4_r2_max[ 
 262 /* YYTRANSLATE(X) -- Bison symbol number corresponding to X.  */ 
 263 #define YYUNDEFTOK  ]b4_undef_token_number[ 
 264 #define YYMAXUTOK   ]b4_user_token_number_max[ 
 266 #define YYTRANSLATE(YYX)                                                \ 
 267   ((YYX <= 0) ? YYEOF :                                                 \ 
 268    (unsigned)(YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 
 270 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */ 
 271 static const ]b4_int_type_for([b4_translate
])[ yytranslate
[] = 
 277 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 
 279 static const ]b4_int_type_for([b4_prhs
])[ yyprhs
[] = 
 284 /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 
 285 static const ]b4_int_type_for([b4_rhs
])[ yyrhs
[] = 
 290 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */ 
 291 static const ]b4_int_type_for([b4_rline
])[ yyrline
[] = 
 297 #if (YYDEBUG) || YYERROR_VERBOSE 
 298 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 
 299    First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 
 300 static const char *const yytname
[] = 
 305 #define yytname_size ((int) (sizeof (yytname) / sizeof (yytname[0]))) 
 308 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */ 
 309 static const ]b4_int_type_for([b4_r1
])[ yyr1
[] = 
 314 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */ 
 315 static const ]b4_int_type_for([b4_r2
])[ yyr2
[] = 
 320 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */ 
 321 static const ]b4_int_type_for([b4_dprec
])[ yydprec
[] = 
 326 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */ 
 327 static const ]b4_int_type_for([b4_merger
])[ yymerger
[] = 
 332 /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE 
 333    doesn't specify something else to do.  Zero means the default is an 
 335 static const ]b4_int_type_for([b4_defact
])[ yydefact
[] = 
 340 /* YYPDEFGOTO[NTERM-NUM]. */ 
 341 static const ]b4_int_type_for([b4_defgoto
])[ yydefgoto
[] = 
 346 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 
 348 #define YYPACT_NINF ]b4_pact_ninf[ 
 349 static const ]b4_int_type_for([b4_pact
])[ yypact
[] = 
 354 /* YYPGOTO[NTERM-NUM].  */ 
 355 static const ]b4_int_type_for([b4_pgoto
])[ yypgoto
[] = 
 360 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If 
 361    positive, shift that token.  If negative, reduce the rule which 
 362    number is the opposite.  If zero, do what YYDEFACT says. 
 363    If YYTABLE_NINF, parse error.  */ 
 364 #define YYTABLE_NINF ]b4_table_ninf[ 
 365 static const ]b4_int_type_for([b4_table
])[ yytable
[] = 
 370 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of 
 371    list of conflicting reductions corresponding to action entry for 
 372    state STATE-NUM in yytable.  0 means no conflicts.  The list in 
 373    yyconfl is terminated by a rule number of 0.  */ 
 374 static const ]b4_int_type_for([b4_conflict_list_heads
])[ yyconflp
[] = 
 376   ]b4_conflict_list_heads
[ 
 379 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by 
 380    0, pointed into by YYCONFLP.  */ 
 381 ]dnl Do 
not use b4_int_type_for here
, since there are places where
 
 382 dnl pointers onto yyconfl are taken
, which type is 
"short *". 
 383 dnl We probably ought to introduce a type 
for confl
. 
 384 [static const short yyconfl
[] = 
 386   ]b4_conflicting_rules
[ 
 389 static const ]b4_int_type_for([b4_check
])[ yycheck
[] = 
 394 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 
 395    symbol of state STATE-NUM.  */ 
 396 static const ]b4_int_type_for([b4_stos
])[ yystos
[] = 
 402 /* Prevent warning if -Wmissing-prototypes.  */ 
 403 ]b4_c_ansi_function_decl([yyparse
], [int], b4_parse_param
)[ 
 405 /* Error token number */ 
 408 /* YYLLOC_DEFAULT -- Compute the default location (before the actions 
 411 #define YYRHSLOC(yyRhs,YYK) (yyRhs[YYK].yystate.yyloc) 
 413 #ifndef YYLLOC_DEFAULT 
 414 # define YYLLOC_DEFAULT(yyCurrent, yyRhs, YYN)                  \ 
 415   yyCurrent.first_line   = YYRHSLOC(yyRhs,1).first_line;        \ 
 416   yyCurrent.first_column = YYRHSLOC(yyRhs,1).first_column;      \ 
 417   yyCurrent.last_line    = YYRHSLOC(yyRhs,YYN).last_line;       \ 
 418   yyCurrent.last_column  = YYRHSLOC(yyRhs,YYN).last_column; 
 421 /* YYLEX -- calling `yylex' with the right arguments.  */ 
 422 #define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[ 
 427 #define yynerrs (yystack->yyerrcnt) 
 429 #define yychar (yystack->yyrawchar)], 
 437 static const int YYEOF 
= 0; 
 438 static const int YYEMPTY 
= -2; 
 440 typedef enum { yyok
, yyaccept
, yyabort
, yyerr 
} YYRESULTTAG
; 
 443    do { YYRESULTTAG yyflag = YYE; if (yyflag != yyok) return yyflag; }       \ 
 448 #if ! defined (YYFPRINTF) 
 449 #  define YYFPRINTF fprintf 
 452 # define YYDPRINTF(Args)                        \ 
 458 ]b4_yysymprint_generate([b4_c_ansi_function_def
])[ 
 460 # define YYDSYMPRINT(Args)                      \ 
 466 # define YYDSYMPRINTF(Title, Token, Value, Location)            \ 
 470       YYFPRINTF (stderr, "%s ", Title);                         \ 
 471       yysymprint (stderr,                                       \ 
 472                   Token, Value]b4_location_if([, Location])[);  \ 
 473       YYFPRINTF (stderr, "\n");                                 \ 
 477 /* Nonzero means print parse trace.  It is left uninitialized so that 
 478    multiple parsers can coexist.  */ 
 483   /* Avoid empty `if' bodies.  */ 
 484 # define YYDPRINTF(Args)   {} 
 485 # define YYDSYMPRINT(Args) {} 
 486 # define YYDSYMPRINTF(Title, Token, Value, Location) {} 
 488 #endif /* !YYDEBUG */ 
 490 /* YYINITDEPTH -- initial size of the parser's stacks.  */ 
 492 # define YYINITDEPTH ]b4_stack_depth_init[ 
 495 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 
 496    if the built-in stack extension method is used). 
 498    Do not make this value too large; the results are undefined if 
 499    SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem) 
 500    evaluated with infinite-precision integer arithmetic.  */ 
 507 # define YYMAXDEPTH ]b4_stack_depth_max[ 
 510 /* Minimum number of free items on the stack allowed after an 
 511    allocation.  This is to allow allocation and initialization 
 512    to be completed by functions that call expandGLRStack before the 
 513    stack is expanded, thus insuring that all necessary pointers get 
 514    properly redirected to new data. */ 
 517 #if ! defined (YYSTACKEXPANDABLE) \ 
 518     && (! defined (__cplusplus) || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)) 
 519 #define YYSTACKEXPANDABLE 1 
 521 #define YYSTACKEXPANDABLE 0 
 524 /** State numbers, as in LALR(1) machine */ 
 525 typedef int yyStateNum
; 
 527 /** Rule numbers, as in LALR(1) machine */ 
 528 typedef int yyRuleNum
; 
 530 /** Grammar symbol */ 
 531 typedef short yySymbol
; 
 533 /** Item references, as in LALR(1) machine */ 
 534 typedef short yyItemNum
; 
 536 typedef struct yyGLRState yyGLRState
; 
 537 typedef struct yySemanticOption yySemanticOption
; 
 538 typedef union yyGLRStackItem yyGLRStackItem
; 
 539 typedef struct yyGLRStack yyGLRStack
; 
 540 typedef struct yyGLRStateSet yyGLRStateSet
; 
 545   yyStateNum yylrState
; 
 549     yySemanticOption
* yyfirstVal
; 
 555 struct yyGLRStateSet 
{ 
 556   yyGLRState
** yystates
; 
 557   size_t yysize
, yycapacity
; 
 560 struct yySemanticOption 
{ 
 564   yySemanticOption
* yynext
; 
 567 union yyGLRStackItem 
{ 
 569   yySemanticOption yyoption
; 
 581   jmp_buf yyexception_buffer
; 
 582   yyGLRStackItem
* yyitems
; 
 583   yyGLRStackItem
* yynextFree
; 
 585   yyGLRState
* yysplitPoint
; 
 586   yyGLRState
* yylastDeleted
; 
 587   yyGLRStateSet yytops
; 
 590 static void yyinitGLRStack (yyGLRStack
* yystack
, size_t yysize
); 
 591 static void yyexpandGLRStack (yyGLRStack
* yystack
]b4_pure_formals
[); 
 592 static void yyfreeGLRStack (yyGLRStack
* yystack
); 
 595 yyFail (yyGLRStack
* yystack
]b4_pure_formals
[, const char* yyformat
, ...) 
 597   yystack
->yyerrflag 
= 1; 
 598   if (yyformat 
!= NULL
) 
 602       va_start (yyap
, yyformat
); 
 603       vsprintf (yymsg
, yyformat
, yyap
); 
 604       yyerror (]b4_yyerror_args
[yymsg
); 
 606   longjmp (yystack
->yyexception_buffer
, 1); 
 609 #if YYDEBUG || YYERROR_VERBOSE 
 610 /** A printable representation of TOKEN.  Valid until next call to 
 612 static inline const char* 
 613 yytokenName (yySymbol yytoken
) 
 615   return yytname
[yytoken
]; 
 619 /** Perform user action for rule number YYN, with RHS length YYRHSLEN, 
 620  *  and top stack item YYVSP.  YYLVALP points to place to put semantic 
 621  *  value ($$), and yylocp points to place for location information 
 622  *  (@@$). Returns yyok for normal return, yyaccept for YYACCEPT, 
 623  *  yyerr for YYERROR, yyabort for YYABORT. */ 
 625 yyuserAction (yyRuleNum yyn
, int yyrhslen
, yyGLRStackItem
* yyvsp
, 
 626               YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
, yyGLRStack
* yystack
 
 629   /* Avoid `unused' warnings in there are no $n. */ 
 634       *yyvalp 
= yyval_default
; 
 635       *yylocp 
= yyloc_default
; 
 639       *yyvalp 
= yyvsp
[1-yyrhslen
].yystate
.yysemantics
.yysval
; 
 640       *yylocp 
= yyvsp
[1-yyrhslen
].yystate
.yyloc
; 
 643 # define yyerrok (yystack->yyerrState = 0) 
 645 # define YYACCEPT return yyaccept 
 647 # define YYABORT return yyabort 
 649 # define YYERROR return yyerr 
 651 # define YYRECOVERING (yystack->yyerrState != 0) 
 653 # define yyclearin (yychar = *(yystack->yytokenp) = YYEMPTY) 
 655 # define YYBACKUP(Token, Value)                                              \ 
 657     yyerror (]b4_yyerror_args["syntax error: cannot back up");               \ 
 675 /* Line __line__ of __file__.  */ 
 676 b4_syncline([@oline@
], [@ofile@
]) 
 681 yyuserMerge (int yyn
, YYSTYPE
* yy0
, YYSTYPE
* yy1
) 
 683   YYSTYPE yyval 
= *yy0
; 
 684   /* `Use' the arguments.  */ 
 695                               /* Bison grammar-table manipulation.  */ 
 697 ]b4_yydestruct_generate([b4_c_ansi_function_def
])[ 
 699 /** Number of symbols composing the right hand side of rule #RULE. */ 
 701 yyrhsLength (yyRuleNum yyrule
) 
 706 /** Left-hand-side symbol for rule #RULE. */ 
 707 static inline yySymbol
 
 708 yylhsNonterm (yyRuleNum yyrule
) 
 713 #define yyis_pact_ninf(yystate) \ 
 714   ]m4_if(m4_eval(b4_pact_ninf < b4_pact_min), 1, 
 716          ((yystate
) == YYPACT_NINF
))[ 
 718 /** True iff LR state STATE has only a default reduction (regardless 
 721 yyisDefaultedState (yyStateNum yystate
) 
 723   return yyis_pact_ninf (yypact
[yystate
]); 
 726 /** The default reduction for STATE, assuming it has one. */ 
 727 static inline yyRuleNum
 
 728 yydefaultAction (yyStateNum yystate
) 
 730   return yydefact
[yystate
]; 
 733 #define yyis_table_ninf(yyindex) \ 
 734   ]m4_if(m4_eval(b4_table_ninf < b4_table_min), 1, 
 736          ((yyindex
) == YYTABLE_NINF
))[ 
 738 /** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN. 
 740  *    R < 0:  Reduce on rule -R. 
 742  *    R > 0:  Shift to state R. 
 743  *  Set *CONFLICTS to a pointer into yyconfl to 0-terminated list of 
 744  *  conflicting reductions. 
 747 yygetLRActions (yyStateNum yystate
, int yytoken
, 
 748                 int* yyaction
, const short** yyconflicts
) 
 750   int yyindex 
= yypact
[yystate
] + yytoken
; 
 751   if (yyindex 
< 0 || YYLAST 
< yyindex 
|| yycheck
[yyindex
] != yytoken
) 
 753       *yyaction 
= -yydefact
[yystate
]; 
 754       *yyconflicts 
= yyconfl
; 
 756   else if (! yyis_table_ninf (yyindex
)) 
 758       *yyaction 
= yytable
[yyindex
]; 
 759       *yyconflicts 
= yyconfl 
+ yyconflp
[yyindex
]; 
 764       *yyconflicts 
= yyconfl 
+ yyconflp
[yyindex
]; 
 768 static inline yyStateNum
 
 769 yyLRgotoState (yyStateNum yystate
, yySymbol yylhs
) 
 772   yyr 
= yypgoto
[yylhs 
- YYNTOKENS
] + yystate
; 
 773   if (0 <= yyr 
&& yyr 
<= YYLAST 
&& yycheck
[yyr
] == yystate
) 
 776     return yydefgoto
[yylhs 
- YYNTOKENS
]; 
 780 yyisShiftAction (int yyaction
) 
 786 yyisErrorAction (int yyaction
) 
 788   return yyaction 
== 0; 
 793 /** True iff the semantic value of the edge leading to STATE is 
 796 yyhasResolvedValue (yyGLRState
* yystate
) 
 798   return yystate
->yyresolved
; 
 802 yyaddDeferredAction (yyGLRStack
* yystack
, yyGLRState
* yystate
, 
 803                      yyGLRState
* rhs
, yyRuleNum yyrule
]b4_pure_formals
[) 
 805   yySemanticOption
* yynewItem
; 
 806   yynewItem 
= &yystack
->yynextFree
->yyoption
; 
 807   yystack
->yyspaceLeft 
-= 1; 
 808   yystack
->yynextFree 
+= 1; 
 809   yynewItem
->yyisState 
= yyfalse
; 
 810   yynewItem
->yystate 
= rhs
; 
 811   yynewItem
->yyrule 
= yyrule
; 
 812   yynewItem
->yynext 
= yystate
->yysemantics
.yyfirstVal
; 
 813   yystate
->yysemantics
.yyfirstVal 
= yynewItem
; 
 814   if (yystack
->yyspaceLeft 
< YYHEADROOM
) 
 815     yyexpandGLRStack (yystack
]b4_pure_args
[); 
 820 /** Initialize SET to a singleton set containing an empty stack. */ 
 822 yyinitStateSet (yyGLRStateSet
* yyset
) 
 825   yyset
->yycapacity 
= 16; 
 826   yyset
->yystates 
= (yyGLRState
**) malloc (16 * sizeof (yyset
->yystates
[0])); 
 827   yyset
->yystates
[0] = NULL
; 
 830 static void yyfreeStateSet (yyGLRStateSet
* yyset
) 
 832   free (yyset
->yystates
); 
 835 /** Initialize STACK to a single empty stack, with total maximum 
 836  *  capacity for all stacks of SIZE. */ 
 838 yyinitGLRStack (yyGLRStack
* yystack
, size_t yysize
) 
 840   yystack
->yyerrflag 
= 0; 
 841   yystack
->yyerrState 
= 0; 
 843   yystack
->yyspaceLeft 
= yysize
; 
 844   yystack
->yynextFree 
= yystack
->yyitems 
= 
 845     (yyGLRStackItem
*) malloc (yysize 
* sizeof (yystack
->yynextFree
[0])); 
 846   yystack
->yysplitPoint 
= NULL
; 
 847   yystack
->yylastDeleted 
= NULL
; 
 848   yyinitStateSet (&yystack
->yytops
); 
 851 #define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \ 
 852   &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE 
 854 /** If STACK is expandable, extend it.  WARNING: Pointers into the 
 855     stack from outside should be considered invalid after this call. 
 856     We always expand when there are 1 or fewer items left AFTER an 
 857     allocation, so that we can avoid having external pointers exist 
 858     across an allocation. */ 
 860 yyexpandGLRStack (yyGLRStack
* yystack
]b4_pure_formals
[) 
 862 #if YYSTACKEXPANDABLE 
 863   yyGLRStack yynewStack
; 
 864   yyGLRStackItem
* yyp0
, *yyp1
; 
 865   size_t yysize
, yynewSize
; 
 867   yysize 
= yystack
->yynextFree 
- yystack
->yyitems
; 
 868   if (YYMAXDEPTH 
<= yysize
) 
 869     yyFail (yystack
][]b4_pure_args
[, 
 870             "parsing stack overflow (%d items)", yysize
); 
 871   yynewSize 
= 2*yysize
; 
 872   if (YYMAXDEPTH 
< yynewSize
) 
 873     yynewSize 
= YYMAXDEPTH
; 
 874   yyinitGLRStack (&yynewStack
, yynewSize
); 
 875   for (yyp0 
= yystack
->yyitems
, yyp1 
= yynewStack
.yyitems
, yyn 
= yysize
; 
 877        yyn 
-= 1, yyp0 
+= 1, yyp1 
+= 1) 
 882           yyGLRState
* yys0 
= &yyp0
->yystate
; 
 883           yyGLRState
* yys1 
= &yyp1
->yystate
; 
 884           if (yys0
->yypred 
!= NULL
) 
 886               YYRELOC (yyp0
, yyp1
, yys0
->yypred
, yystate
); 
 887           if (! yys0
->yyresolved 
&& yys0
->yysemantics
.yyfirstVal 
!= NULL
) 
 888             yys1
->yysemantics
.yyfirstVal 
= 
 889               YYRELOC(yyp0
, yyp1
, yys0
->yysemantics
.yyfirstVal
, yyoption
); 
 893           yySemanticOption
* yyv0 
= &yyp0
->yyoption
; 
 894           yySemanticOption
* yyv1 
= &yyp1
->yyoption
; 
 895           if (yyv0
->yystate 
!= NULL
) 
 896             yyv1
->yystate 
= YYRELOC (yyp0
, yyp1
, yyv0
->yystate
, yystate
); 
 897           if (yyv0
->yynext 
!= NULL
) 
 898             yyv1
->yynext 
= YYRELOC (yyp0
, yyp1
, yyv0
->yynext
, yyoption
); 
 901   if (yystack
->yysplitPoint 
!= NULL
) 
 902     yystack
->yysplitPoint 
= YYRELOC (yystack
->yyitems
, yynewStack
.yyitems
, 
 903                                  yystack
->yysplitPoint
, yystate
); 
 905   for (yyn 
= 0; yyn 
< yystack
->yytops
.yysize
; yyn 
+= 1) 
 906     if (yystack
->yytops
.yystates
[yyn
] != NULL
) 
 907       yystack
->yytops
.yystates
[yyn
] = 
 908         YYRELOC (yystack
->yyitems
, yynewStack
.yyitems
, 
 909                  yystack
->yytops
.yystates
[yyn
], yystate
); 
 910   free (yystack
->yyitems
); 
 911   yystack
->yyitems 
= yynewStack
.yyitems
; 
 912   yystack
->yynextFree 
= yynewStack
.yynextFree 
+ yysize
; 
 913   yystack
->yyspaceLeft 
= yynewStack
.yyspaceLeft 
- yysize
; 
 917   yyFail (yystack
][]b4_lpure_args
[, 
 918           "parsing stack overflow (%d items)", yysize
); 
 923 yyfreeGLRStack (yyGLRStack
* yystack
) 
 925   free (yystack
->yyitems
); 
 926   yyfreeStateSet (&yystack
->yytops
); 
 929 /** Assuming that S is a GLRState somewhere on STACK, update the 
 930  *  splitpoint of STACK, if needed, so that it is at least as deep as 
 933 yyupdateSplit (yyGLRStack
* yystack
, yyGLRState
* yys
) 
 935   if (yystack
->yysplitPoint 
!= NULL 
&& yystack
->yysplitPoint 
> yys
) 
 936     yystack
->yysplitPoint 
= yys
; 
 939 /** Invalidate stack #K in STACK. */ 
 941 yymarkStackDeleted (yyGLRStack
* yystack
, int yyk
) 
 943   if (yystack
->yytops
.yystates
[yyk
] != NULL
) 
 944     yystack
->yylastDeleted 
= yystack
->yytops
.yystates
[yyk
]; 
 945   yystack
->yytops
.yystates
[yyk
] = NULL
; 
 948 /** Undelete the last stack that was marked as deleted.  Can only be 
 949     done once after a deletion, and only when all other stacks have 
 952 yyundeleteLastStack (yyGLRStack
* yystack
) 
 954   if (yystack
->yylastDeleted 
== NULL 
|| yystack
->yytops
.yysize 
!= 0) 
 956   yystack
->yytops
.yystates
[0] = yystack
->yylastDeleted
; 
 957   yystack
->yytops
.yysize 
= 1; 
 958   YYDPRINTF ((stderr
, "Restoring last deleted stack as stack #0.\n")); 
 959   yystack
->yylastDeleted 
= NULL
; 
 963 yyremoveDeletes (yyGLRStack
* yystack
) 
 967   while (yyj 
< yystack
->yytops
.yysize
) 
 969       if (yystack
->yytops
.yystates
[yyi
] == NULL
) 
 972             YYDPRINTF ((stderr
, "Removing dead stacks.\n")); 
 973           yystack
->yytops
.yysize 
-= 1; 
 977           yystack
->yytops
.yystates
[yyj
] = yystack
->yytops
.yystates
[yyi
]; 
 979             YYDPRINTF ((stderr
, "Rename stack %d -> %d.\n", yyi
, yyj
)); 
 986 /** Shift to a new state on stack #K of STACK, corresponding to LR state 
 987  * LRSTATE, at input position POSN, with (resolved) semantic value SVAL. */ 
 989 yyglrShift (yyGLRStack
* yystack
, int yyk
, yyStateNum yylrState
, size_t yyposn
, 
 990             YYSTYPE yysval
, YYLTYPE
* yylocp
]b4_user_formals
[) 
 992   yyGLRStackItem
* yynewItem
; 
 994   yynewItem 
= yystack
->yynextFree
; 
 995   yystack
->yynextFree 
+= 1; 
 996   yystack
->yyspaceLeft 
-= 1; 
 997   yynewItem
->yystate
.yyisState 
= yytrue
; 
 998   yynewItem
->yystate
.yylrState 
= yylrState
; 
 999   yynewItem
->yystate
.yyposn 
= yyposn
; 
1000   yynewItem
->yystate
.yyresolved 
= yytrue
; 
1001   yynewItem
->yystate
.yypred 
= yystack
->yytops
.yystates
[yyk
]; 
1002   yystack
->yytops
.yystates
[yyk
] = &yynewItem
->yystate
; 
1003   yynewItem
->yystate
.yysemantics
.yysval 
= yysval
; 
1004   yynewItem
->yystate
.yyloc 
= *yylocp
; 
1005   if (yystack
->yyspaceLeft 
< YYHEADROOM
) 
1006     yyexpandGLRStack (yystack
]b4_pure_args
[); 
1009 /** Shift to a new state on stack #K of STACK, to a new state 
1010  *  corresponding to LR state LRSTATE, at input position POSN, with 
1011  * the (unresolved) semantic value of RHS under the action for RULE. */ 
1013 yyglrShiftDefer (yyGLRStack
* yystack
, int yyk
, yyStateNum yylrState
, 
1014                  size_t yyposn
, yyGLRState
* rhs
, yyRuleNum yyrule
]b4_pure_formals
[) 
1016   yyGLRStackItem
* yynewItem
; 
1018   yynewItem 
= yystack
->yynextFree
; 
1019   yynewItem
->yystate
.yyisState 
= yytrue
; 
1020   yynewItem
->yystate
.yylrState 
= yylrState
; 
1021   yynewItem
->yystate
.yyposn 
= yyposn
; 
1022   yynewItem
->yystate
.yyresolved 
= yyfalse
; 
1023   yynewItem
->yystate
.yypred 
= yystack
->yytops
.yystates
[yyk
]; 
1024   yynewItem
->yystate
.yysemantics
.yyfirstVal 
= NULL
; 
1025   yystack
->yytops
.yystates
[yyk
] = &yynewItem
->yystate
; 
1026   yystack
->yynextFree 
+= 1; 
1027   yystack
->yyspaceLeft 
-= 1; 
1028   yyaddDeferredAction (yystack
, &yynewItem
->yystate
, rhs
, yyrule
]b4_pure_args
[); 
1031 /** Pop the symbols consumed by reduction #RULE from the top of stack 
1032  *  #K of STACK, and perform the appropriate semantic action on their 
1033  *  semantic values.  Assumes that all ambiguities in semantic values 
1034  *  have been previously resolved. Set *VALP to the resulting value, 
1035  *  and *LOCP to the computed location (if any).  Return value is as 
1036  *  for userAction. */ 
1037 static inline YYRESULTTAG
 
1038 yydoAction (yyGLRStack
* yystack
, int yyk
, yyRuleNum yyrule
, 
1039             YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[) 
1041   int yynrhs 
= yyrhsLength (yyrule
); 
1043   if (yystack
->yysplitPoint 
== NULL
) 
1045       /* Standard special case: single stack. */ 
1046       yyGLRStackItem
* rhs 
= (yyGLRStackItem
*) yystack
->yytops
.yystates
[yyk
]; 
1048       yystack
->yynextFree 
-= yynrhs
; 
1049       yystack
->yyspaceLeft 
+= yynrhs
; 
1050       yystack
->yytops
.yystates
[0] = & yystack
->yynextFree
[-1].yystate
; 
1053           *yyvalp 
= yyval_default
; 
1054           *yylocp 
= yyloc_default
; 
1058           *yyvalp 
= rhs
[1-yynrhs
].yystate
.yysemantics
.yysval
; 
1059           *yylocp 
= rhs
[1-yynrhs
].yystate
.yyloc
; 
1061       return yyuserAction (yyrule
, yynrhs
, rhs
, 
1062                            yyvalp
, yylocp
, yystack
]b4_user_args
[); 
1068       yyGLRStackItem yyrhsVals
[YYMAXRHS
]; 
1069       for (yyi 
= yynrhs
-1, yys 
= yystack
->yytops
.yystates
[yyk
]; 0 <= yyi
; 
1070            yyi 
-= 1, yys 
= yys
->yypred
) 
1072           assert (yys
->yypred 
!= NULL
); 
1073           yyrhsVals
[yyi
].yystate
.yyresolved 
= yytrue
; 
1074           yyrhsVals
[yyi
].yystate
.yysemantics
.yysval 
= yys
->yysemantics
.yysval
; 
1075           yyrhsVals
[yyi
].yystate
.yyloc 
= yys
->yyloc
; 
1077       yyupdateSplit (yystack
, yys
); 
1078       yystack
->yytops
.yystates
[yyk
] = yys
; 
1081           *yyvalp 
= yyval_default
; 
1082           *yylocp 
= yyloc_default
; 
1086           *yyvalp 
= yyrhsVals
[0].yystate
.yysemantics
.yysval
; 
1087           *yylocp 
= yyrhsVals
[0].yystate
.yyloc
; 
1089       return yyuserAction (yyrule
, yynrhs
, yyrhsVals 
+ (yynrhs
-1), 
1090                            yyvalp
, yylocp
, yystack
]b4_user_args
[); 
1095 # define YY_REDUCE_PRINT(K, Rule) 
1097 # define YY_REDUCE_PRINT(K, Rule)       \ 
1100     yy_reduce_print (K, Rule);          \ 
1103 /*----------------------------------------------------------. 
1104 | Report that the RULE is going to be reduced on stack #K.  | 
1105 `----------------------------------------------------------*/ 
1108 yy_reduce_print (size_t yyk
, yyRuleNum yyrule
) 
1111   YYDPRINTF ((stderr
, "Reducing stack %d by rule %d (line %d), ", 
1112               yyk
, yyrule 
- 1, yyrline
[yyrule
])); 
1113   /* Print the symbols being reduced, and their result.  */ 
1114   for (yyi 
= yyprhs
[yyrule
]; 0 <= yyrhs
[yyi
]; yyi
++) 
1115     YYFPRINTF (stderr
, "%s ", yytokenName (yyrhs
[yyi
])); 
1116   YYFPRINTF (stderr
, "-> %s\n", yytokenName (yyr1
[yyrule
])); 
1120 /** Pop items off stack #K of STACK according to grammar rule RULE, 
1121  *  and push back on the resulting nonterminal symbol.  Perform the 
1122  *  semantic action associated with RULE and store its value with the 
1123  *  newly pushed state, if FORCEEVAL or if STACK is currently 
1124  *  unambiguous.  Otherwise, store the deferred semantic action with 
1125  *  the new state.  If the new state would have an identical input 
1126  *  position, LR state, and predecessor to an existing state on the stack, 
1127  *  it is identified with that existing state, eliminating stack #K from 
1128  *  the STACK. In this case, the (necessarily deferred) semantic value is 
1129  *  added to the options for the existing state's semantic value. 
1131 static inline YYRESULTTAG
 
1132 yyglrReduce (yyGLRStack
* yystack
, size_t yyk
, yyRuleNum yyrule
, 
1133              bool yyforceEval
]b4_pure_formals
[) 
1135   size_t yyposn 
= yystack
->yytops
.yystates
[yyk
]->yyposn
; 
1137   if (yyforceEval 
|| yystack
->yysplitPoint 
== NULL
) 
1142       YY_REDUCE_PRINT (yyk
, yyrule
); 
1143       YYCHK (yydoAction (yystack
, yyk
, yyrule
, &yysval
, &yyloc
]b4_user_args
[)); 
1144       yyglrShift (yystack
, yyk
, 
1145                   yyLRgotoState (yystack
->yytops
.yystates
[yyk
]->yylrState
, 
1146                                  yylhsNonterm (yyrule
)), 
1147                   yyposn
, yysval
, &yyloc
]b4_user_args
[); 
1148       YYDPRINTF ((stderr
, "Stack %d entering state %d\n", 
1149                   yyk
, yystack
->yytops
.yystates
[yyk
]->yylrState
)); 
1155       yyGLRState
* yys
, *yys0 
= yystack
->yytops
.yystates
[yyk
]; 
1156       yyStateNum yynewLRState
; 
1158       for (yys 
= yystack
->yytops
.yystates
[yyk
], yyn 
= yyrhsLength (yyrule
); 
1162           assert (yys 
!= NULL
); 
1164       yyupdateSplit (yystack
, yys
); 
1165       yynewLRState 
= yyLRgotoState (yys
->yylrState
, yylhsNonterm (yyrule
)); 
1167                   "Reduced stack %d by rule #%d; action deferred. " 
1168                   "Now in state %d.\n", 
1169                   yyk
, yyrule
-1, yynewLRState
)); 
1170       for (yyi 
= 0; yyi 
< yystack
->yytops
.yysize
; yyi 
+= 1) 
1171         if (yyi 
!= yyk 
&& yystack
->yytops
.yystates
[yyi
] != NULL
) 
1173             yyGLRState
* yyp
, *yysplit 
= yystack
->yysplitPoint
; 
1174             yyp 
= yystack
->yytops
.yystates
[yyi
]; 
1175             while (yyp 
!= yys 
&& yyp 
!= yysplit 
&& yyp
->yyposn 
>= yyposn
) 
1177                 if (yyp
->yylrState 
== yynewLRState 
&& yyp
->yypred 
== yys
) 
1179                     yyaddDeferredAction (yystack
, yyp
, yys0
, yyrule
]b4_pure_args
[); 
1180                     yymarkStackDeleted (yystack
, yyk
); 
1181                     YYDPRINTF ((stderr
, "Merging stack %d into stack %d.\n", 
1188       yystack
->yytops
.yystates
[yyk
] = yys
; 
1189       yyglrShiftDefer (yystack
, yyk
, yynewLRState
, yyposn
, yys0
, yyrule
]b4_pure_args
[); 
1195 yysplitStack (yyGLRStack
* yystack
, int yyk
) 
1197   if (yystack
->yysplitPoint 
== NULL
) 
1200       yystack
->yysplitPoint 
= yystack
->yytops
.yystates
[yyk
]; 
1202   if (yystack
->yytops
.yysize 
>= yystack
->yytops
.yycapacity
) 
1204       yystack
->yytops
.yycapacity 
*= 2; 
1205       yystack
->yytops
.yystates 
= 
1206         (yyGLRState
**) realloc (yystack
->yytops
.yystates
, 
1207                                 yystack
->yytops
.yycapacity
 
1208                                 * sizeof (yyGLRState
*)); 
1210   yystack
->yytops
.yystates
[yystack
->yytops
.yysize
] 
1211     = yystack
->yytops
.yystates
[yyk
]; 
1212   yystack
->yytops
.yysize 
+= 1; 
1213   return yystack
->yytops
.yysize
-1; 
1216 /** True iff Y0 and Y1 represent identical options at the top level. 
1217  *  That is, they represent the same rule applied to RHS symbols 
1218  *  that produce the same terminal symbols. */ 
1220 yyidenticalOptions (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
) 
1222   if (yyy0
->yyrule 
== yyy1
->yyrule
) 
1224       yyGLRState 
*yys0
, *yys1
; 
1226       for (yys0 
= yyy0
->yystate
, yys1 
= yyy1
->yystate
, 
1227            yyn 
= yyrhsLength (yyy0
->yyrule
); 
1229            yys0 
= yys0
->yypred
, yys1 
= yys1
->yypred
, yyn 
-= 1) 
1230         if (yys0
->yyposn 
!= yys1
->yyposn
) 
1238 /** Assuming identicalOptions (Y0,Y1), (destructively) merge the 
1239  *  alternative semantic values for the RHS-symbols of Y1 into the 
1240  *  corresponding semantic value sets of the symbols of Y0. */ 
1242 yymergeOptionSets (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
) 
1244   yyGLRState 
*yys0
, *yys1
; 
1246   for (yys0 
= yyy0
->yystate
, yys1 
= yyy1
->yystate
, 
1247        yyn 
= yyrhsLength (yyy0
->yyrule
); 
1249        yys0 
= yys0
->yypred
, yys1 
= yys1
->yypred
, yyn 
-= 1) 
1252     else if (! yys0
->yyresolved 
&& ! yys1
->yyresolved
) 
1254         yySemanticOption
* yyz
; 
1255         for (yyz 
= yys0
->yysemantics
.yyfirstVal
; yyz
->yynext 
!= NULL
; 
1258         yyz
->yynext 
= yys1
->yysemantics
.yyfirstVal
; 
1262 /** Y0 and Y1 represent two possible actions to take in a given 
1263  *  parsing state; return 0 if no combination is possible, 
1264  *  1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */ 
1266 yypreference (yySemanticOption
* y0
, yySemanticOption
* y1
) 
1268   yyRuleNum r0 
= y0
->yyrule
, r1 
= y1
->yyrule
; 
1269   int p0 
= yydprec
[r0
], p1 
= yydprec
[r1
]; 
1273       if (yymerger
[r0
] == 0 || yymerger
[r0
] != yymerger
[r1
]) 
1278   if (p0 
== 0 || p1 
== 0) 
1287 static YYRESULTTAG 
yyresolveValue (yySemanticOption
* yyoptionList
, 
1288                                    yyGLRStack
* yystack
, YYSTYPE
* yyvalp
, 
1289                                    YYLTYPE
* yylocp
]b4_user_formals
[); 
1292 yyresolveStates (yyGLRState
* yys
, int yyn
, yyGLRStack
* yystack
]b4_user_formals
[) 
1297       assert (yys
->yypred 
!= NULL
); 
1298       yyflag 
= yyresolveStates (yys
->yypred
, yyn
-1, yystack
]b4_user_args
[); 
1301       if (! yys
->yyresolved
) 
1303           yyflag 
= yyresolveValue (yys
->yysemantics
.yyfirstVal
, yystack
, 
1304                                    &yys
->yysemantics
.yysval
, &yys
->yyloc
 
1308           yys
->yyresolved 
= yytrue
; 
1315 yyresolveAction (yySemanticOption
* yyopt
, yyGLRStack
* yystack
, 
1316                  YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[) 
1318   yyGLRStackItem yyrhsVals
[YYMAXRHS
]; 
1322   yynrhs 
= yyrhsLength (yyopt
->yyrule
); 
1323   YYCHK (yyresolveStates (yyopt
->yystate
, yynrhs
, yystack
]b4_user_args
[)); 
1324   for (yyi 
= yynrhs
-1, yys 
= yyopt
->yystate
; 0 <= yyi
; 
1325        yyi 
-= 1, yys 
= yys
->yypred
) 
1327       assert (yys
->yypred 
!= NULL
); 
1328       yyrhsVals
[yyi
].yystate
.yyresolved 
= yytrue
; 
1329       yyrhsVals
[yyi
].yystate
.yysemantics
.yysval 
= yys
->yysemantics
.yysval
; 
1330       yyrhsVals
[yyi
].yystate
.yyloc 
= yys
->yyloc
; 
1332   return yyuserAction (yyopt
->yyrule
, yynrhs
, yyrhsVals 
+ (yynrhs
-1), 
1333                        yyvalp
, yylocp
, yystack
]b4_user_args
[); 
1338 yyreportTree (yySemanticOption
* yyx
, int yyindent
) 
1340   int yynrhs 
= yyrhsLength (yyx
->yyrule
); 
1343   yyGLRState
* yystates
[YYMAXRHS
]; 
1344   yyGLRState yyleftmost_state
; 
1346   for (yyi 
= yynrhs
, yys 
= yyx
->yystate
; 0 < yyi
; yyi 
-= 1, yys 
= yys
->yypred
) 
1347     yystates
[yyi
] = yys
; 
1350       yyleftmost_state
.yyposn 
= 0; 
1351       yystates
[0] = &yyleftmost_state
; 
1356   if (yyx
->yystate
->yyposn 
< yys
->yyposn 
+ 1) 
1357     YYFPRINTF (stderr
, "%*s%s -> <Rule %d, empty>\n", 
1358                yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)), 
1361     YYFPRINTF (stderr
, "%*s%s -> <Rule %d, tokens %d .. %d>\n", 
1362                yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)), 
1363                yyx
->yyrule
, yys
->yyposn
+1, yyx
->yystate
->yyposn
); 
1364   for (yyi 
= 1; yyi 
<= yynrhs
; yyi 
+= 1) 
1366       if (yystates
[yyi
]->yyresolved
) 
1368           if (yystates
[yyi
-1]->yyposn
+1 > yystates
[yyi
]->yyposn
) 
1369             YYFPRINTF (stderr
, "%*s%s <empty>\n", yyindent
+2, "", 
1370                        yytokenName (yyrhs
[yyprhs
[yyx
->yyrule
]+yyi
-1])); 
1372             YYFPRINTF (stderr
, "%*s%s <tokens %d .. %d>\n", yyindent
+2, "", 
1373                        yytokenName (yyrhs
[yyprhs
[yyx
->yyrule
]+yyi
-1]), 
1374                        yystates
[yyi
-1]->yyposn
+1, yystates
[yyi
]->yyposn
); 
1377         yyreportTree (yystates
[yyi
]->yysemantics
.yyfirstVal
, yyindent
+2); 
1383 yyreportAmbiguity (yySemanticOption
* yyx0
, yySemanticOption
* yyx1
, 
1384                    yyGLRStack
* yystack
]b4_pure_formals
[) 
1386   /* `Unused' warnings.  */ 
1391   YYFPRINTF (stderr
, "Ambiguity detected.\n"); 
1392   YYFPRINTF (stderr
, "Option 1,\n"); 
1393   yyreportTree (yyx0
, 2); 
1394   YYFPRINTF (stderr
, "\nOption 2,\n"); 
1395   yyreportTree (yyx1
, 2); 
1396   YYFPRINTF (stderr
, "\n"); 
1398   yyFail (yystack
][]b4_pure_args
[, "ambiguity detected"); 
1402 /** Resolve the ambiguity represented by OPTIONLIST, perform the indicated 
1403  *  actions, and return the result. */ 
1405 yyresolveValue (yySemanticOption
* yyoptionList
, yyGLRStack
* yystack
, 
1406                 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[) 
1408   yySemanticOption
* yybest
; 
1409   yySemanticOption
* yyp
; 
1412   yybest 
= yyoptionList
; 
1414   for (yyp 
= yyoptionList
->yynext
; yyp 
!= NULL
; yyp 
= yyp
->yynext
) 
1416       if (yyidenticalOptions (yybest
, yyp
)) 
1417         yymergeOptionSets (yybest
, yyp
); 
1419         switch (yypreference (yybest
, yyp
)) 
1422             yyreportAmbiguity (yybest
, yyp
, yystack
]b4_pure_args
[); 
1438       int yyprec 
= yydprec
[yybest
->yyrule
]; 
1439       YYCHK (yyresolveAction (yybest
, yystack
, yyvalp
, yylocp
]b4_user_args
[)); 
1440       for (yyp 
= yybest
->yynext
; yyp 
!= NULL
; yyp 
= yyp
->yynext
) 
1442           if (yyprec 
== yydprec
[yyp
->yyrule
]) 
1446               YYCHK (yyresolveAction (yyp
, yystack
, &yyval1
, &yydummy
]b4_user_args
[)); 
1447               *yyvalp 
= yyuserMerge (yymerger
[yyp
->yyrule
], yyvalp
, &yyval1
); 
1453     return yyresolveAction (yybest
, yystack
, yyvalp
, yylocp
]b4_user_args
[); 
1457 yyresolveStack (yyGLRStack
* yystack
]b4_user_formals
[) 
1459   if (yystack
->yysplitPoint 
!= NULL
) 
1464       for (yyn 
= 0, yys 
= yystack
->yytops
.yystates
[0]; 
1465            yys 
!= yystack
->yysplitPoint
; 
1466            yys 
= yys
->yypred
, yyn 
+= 1) 
1468       YYCHK (yyresolveStates (yystack
->yytops
.yystates
[0], yyn
, yystack
 
1475 yycompressStack (yyGLRStack
* yystack
) 
1477   yyGLRState
* yyp
, *yyq
, *yyr
; 
1479   if (yystack
->yytops
.yysize 
!= 1 || yystack
->yysplitPoint 
== NULL
) 
1482   for (yyp 
= yystack
->yytops
.yystates
[0], yyq 
= yyp
->yypred
, yyr 
= NULL
; 
1483        yyp 
!= yystack
->yysplitPoint
; 
1484        yyr 
= yyp
, yyp 
= yyq
, yyq 
= yyp
->yypred
) 
1487   yystack
->yyspaceLeft 
+= yystack
->yynextFree 
- yystack
->yyitems
; 
1488   yystack
->yynextFree 
= ((yyGLRStackItem
*) yystack
->yysplitPoint
) + 1; 
1489   yystack
->yyspaceLeft 
-= yystack
->yynextFree 
- yystack
->yyitems
; 
1490   yystack
->yysplitPoint 
= NULL
; 
1491   yystack
->yylastDeleted 
= NULL
; 
1495       yystack
->yynextFree
->yystate 
= *yyr
; 
1497       yystack
->yynextFree
->yystate
.yypred 
= & yystack
->yynextFree
[-1].yystate
; 
1498       yystack
->yytops
.yystates
[0] = &yystack
->yynextFree
->yystate
; 
1499       yystack
->yynextFree 
+= 1; 
1500       yystack
->yyspaceLeft 
-= 1; 
1505 yyprocessOneStack (yyGLRStack
* yystack
, int yyk
, 
1506                    size_t yyposn
, YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
 
1510   const short* yyconflicts
; 
1512   yySymbol
* const yytokenp 
= yystack
->yytokenp
; 
1514   while (yystack
->yytops
.yystates
[yyk
] != NULL
) 
1516       yyStateNum yystate 
= yystack
->yytops
.yystates
[yyk
]->yylrState
; 
1518       assert (yystate 
!= YYFINAL
); 
1519       if (yyisDefaultedState (yystate
)) 
1521           yyrule 
= yydefaultAction (yystate
); 
1524               YYDPRINTF ((stderr
, "Stack %d dies.\n", yyk
)); 
1525               yymarkStackDeleted (yystack
, yyk
); 
1528           YYCHK (yyglrReduce (yystack
, yyk
, yyrule
, yyfalse
]b4_lpure_args
[)); 
1532           if (*yytokenp 
== YYEMPTY
) 
1534               YYDPRINTF ((stderr
, "Reading a token: ")); 
1536               *yytokenp 
= YYTRANSLATE (yychar
); 
1537               YYDSYMPRINTF ("Next token is", *yytokenp
, yylvalp
, yyllocp
); 
1539           yygetLRActions (yystate
, *yytokenp
, &yyaction
, &yyconflicts
); 
1541           while (*yyconflicts 
!= 0) 
1543               int yynewStack 
= yysplitStack (yystack
, yyk
); 
1544               YYDPRINTF ((stderr
, "Splitting off stack %d from %d.\n", 
1546               YYCHK (yyglrReduce (yystack
, yynewStack
, 
1547                                   *yyconflicts
, yyfalse
]b4_lpure_args
[)); 
1548               YYCHK (yyprocessOneStack (yystack
, yynewStack
, yyposn
, 
1549                                         yylvalp
, yyllocp
]b4_user_args
[)); 
1553           if (yyisShiftAction (yyaction
)) 
1555               YYDPRINTF ((stderr
, "Shifting token %s on stack %d, ", 
1556                           yytokenName (*yytokenp
), yyk
)); 
1557               yyglrShift (yystack
, yyk
, yyaction
, yyposn
+1, 
1558                           *yylvalp
, yyllocp
]b4_user_args
[); 
1559               YYDPRINTF ((stderr
, "which is now in state #%d\n", 
1560                           yystack
->yytops
.yystates
[yyk
]->yylrState
)); 
1563           else if (yyisErrorAction (yyaction
)) 
1565               YYDPRINTF ((stderr
, "Stack %d dies.\n", yyk
)); 
1566               yymarkStackDeleted (yystack
, yyk
); 
1570             YYCHK (yyglrReduce (yystack
, yyk
, -yyaction
, yyfalse
]b4_lpure_args
[)); 
1577 yyreportParseError (yyGLRStack
* yystack
, 
1578                     YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
]b4_user_formals
[) 
1580   /* `Unused' warnings. */ 
1584   if (yystack
->yyerrState 
== 0) 
1587       yySymbol
* const yytokenp 
= yystack
->yytokenp
; 
1588       int yyn
, yyx
, yycount
; 
1590       const char* yyprefix
; 
1593       yyn 
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
]; 
1594       if (YYPACT_NINF 
< yyn 
&& yyn 
< YYLAST
) 
1597           /* Start YYX at -YYN if negative to avoid negative indexes in 
1599           yysize 
= sizeof ("parse error, unexpected ") 
1600             + strlen (yytokenName (*yytokenp
)); 
1601           yyprefix 
= ", expecting "; 
1602           for (yyx 
= yyn 
< 0 ? -yyn 
: 0; yyx 
< yytname_size 
&& yycount 
<= 5; 
1604             if (yycheck
[yyx 
+ yyn
] == yyx 
&& yyx 
!= YYTERROR
) 
1605               yysize 
+= strlen (yytokenName (yyx
)) + strlen (yyprefix
), 
1606                 yycount 
+= 1, yyprefix 
= " or "; 
1607           yymsg 
= yyp 
= (char*) malloc (yysize
); 
1608           sprintf (yyp
, "parse error, unexpected %s", yytokenName (*yytokenp
)); 
1609           yyp 
+= strlen (yyp
); 
1612               yyprefix 
= ", expecting "; 
1613               for (yyx 
= yyn 
< 0 ? -yyn 
: 0; yyx 
< yytname_size
; yyx 
+= 1) 
1614                 if (yycheck
[yyx 
+ yyn
] == yyx 
&& yyx 
!= YYTERROR
) 
1616                     sprintf (yyp
, "%s%s", yyprefix
, yytokenName (yyx
)); 
1617                     yyp 
+= strlen (yyp
); 
1621           yyerror (]b4_lyyerror_args
[yymsg
); 
1626         yyerror (]b4_lyyerror_args
["parse error"); 
1631 /* Recover from a syntax error on YYSTACK, assuming that YYTOKENP, 
1632    YYLVALP, and YYLLOCP point to the syntactic category, semantic 
1633    value, and location of the lookahead.  */ 
1635 yyrecoverParseError (yyGLRStack
* yystack
, 
1636                      YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
]b4_user_formals
[) 
1638   yySymbol
* const yytokenp 
= yystack
->yytokenp
; 
1642   if (yystack
->yyerrState 
== 0) 
1643     yystack
->yyerrState 
= 3; 
1644   else if (yystack
->yyerrState 
== 3) 
1645     /* We just shifted the error token and (perhaps) took some 
1646        reductions.  Skip tokens until we can proceed.  */ 
1649         if (*yytokenp 
== YYEOF
) 
1651             /* Now pop stack until we find a state that shifts the 
1653             while (yystack
->yytops
.yystates
[0] != NULL
) 
1655                 yyGLRState 
*yys 
= yystack
->yytops
.yystates
[0]; 
1656                 YYDSYMPRINTF ("Error: popping", 
1657                               yystos
[yys
->yylrState
], 
1658                               &yys
->yysemantics
.yysval
, &yys
->yyloc
); 
1659                 yydestruct (yystos
[yys
->yylrState
], 
1660                             &yys
->yysemantics
.yysval
]b4_location_if([, &yys
->yyloc
])[); 
1661                 yystack
->yytops
.yystates
[0] = yys
->yypred
; 
1662                 yystack
->yynextFree 
-= 1; 
1663                 yystack
->yyspaceLeft 
+= 1; 
1665             yyFail (yystack
][]b4_lpure_args
[, NULL
); 
1667         if (*yytokenp 
!= YYEMPTY
) 
1669             YYDSYMPRINTF ("Error: discarding", *yytokenp
, yylvalp
, yyllocp
); 
1670             yydestruct (*yytokenp
, yylvalp
]b4_location_if([, yyllocp
])[); 
1672         YYDPRINTF ((stderr
, "Reading a token: ")); 
1674         *yytokenp 
= YYTRANSLATE (yychar
); 
1675         YYDSYMPRINTF ("Next token is", *yytokenp
, yylvalp
, yyllocp
); 
1676         yyj 
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
]; 
1677         if (yyis_pact_ninf (yyj
)) 
1678           /* Something's not right; we shouldn't be here.  */ 
1679           yyFail (yystack
][]b4_lpure_args
[, NULL
); 
1681         if (yyj 
< 0 || YYLAST 
< yyj 
|| yycheck
[yyj
] != *yytokenp
) 
1683             if (yydefact
[yystack
->yytops
.yystates
[0]->yylrState
] != 0) 
1686         else if (yytable
[yyj
] != 0 && ! yyis_table_ninf (yytable
[yyj
])) 
1690   /* Reduce to one stack.  */ 
1691   for (yyk 
= 0; yyk 
< yystack
->yytops
.yysize
; yyk 
+= 1) 
1692     if (yystack
->yytops
.yystates
[yyk
] != NULL
) 
1694   if (yyk 
>= yystack
->yytops
.yysize
) 
1695     yyFail (yystack
][]b4_lpure_args
[, NULL
); 
1696   for (yyk 
+= 1; yyk 
< yystack
->yytops
.yysize
; yyk 
+= 1) 
1697     yymarkStackDeleted (yystack
, yyk
); 
1698   yyremoveDeletes (yystack
); 
1699   yycompressStack (yystack
); 
1701   /* Now pop stack until we find a state that shifts the error token. */ 
1702   while (yystack
->yytops
.yystates
[0] != NULL
) 
1704       yyGLRState 
*yys 
= yystack
->yytops
.yystates
[0]; 
1705       yyj 
= yypact
[yys
->yylrState
]; 
1706       if (! yyis_pact_ninf (yyj
)) 
1709           if (0 <= yyj 
&& yyj 
<= YYLAST 
&& yycheck
[yyj
] == YYTERROR
 
1710               && yyisShiftAction (yytable
[yyj
])) 
1712               YYDPRINTF ((stderr
, "Shifting error token, ")); 
1713               yyglrShift (yystack
, 0, yytable
[yyj
], 
1714                           yys
->yyposn
, *yylvalp
, yyllocp
]b4_user_args
[); 
1715               YYDPRINTF ((stderr
, "Entering state %d\n", 
1716                           yystack
->yytops
.yystates
[0]->yylrState
)); 
1720       YYDSYMPRINTF ("Error: popping", 
1721                     yystos
[yys
->yylrState
], 
1722                     &yys
->yysemantics
.yysval
, &yys
->yyloc
); 
1723       yydestruct (yystos
[yys
->yylrState
], 
1724                   &yys
->yysemantics
.yysval
]b4_location_if([, &yys
->yyloc
])[); 
1725       yystack
->yytops
.yystates
[0] = yys
->yypred
; 
1726       yystack
->yynextFree 
-= 1; 
1727       yystack
->yyspaceLeft 
+= 1; 
1729   if (yystack
->yytops
.yystates
[0] == NULL
) 
1730     yyFail (yystack
][]b4_lpure_args
[, NULL
); 
1733 #define YYCHK1(YYE)                                                          \ 
1739       yystack.yyerrflag = 1;                                                 \ 
1742       yystack.yyerrflag = 0;                                                 \ 
1745       goto yyuser_error;                                                     \ 
1754 ]b4_c_ansi_function_def([yyparse
], [int], b4_parse_param
)[ 
1764   #define yychar (yystack.yyrawchar) 
1767   YYSTYPE
* const yylvalp 
= &yylval
; 
1768   YYLTYPE
* const yyllocp 
= &yylloc
; 
1770   yyinitGLRStack (&yystack
, YYINITDEPTH
); 
1771   yystack
.yytokenp 
= &yytoken
; 
1773   YYDPRINTF ((stderr
, "Starting parse\n")); 
1775   if (setjmp (yystack
.yyexception_buffer
) != 0) 
1778   yyglrShift (&yystack
, 0, 0, 0, yyval_default
, &yyloc_default
]b4_user_args
[); 
1784       /* For efficiency, we have two loops, the first of which is 
1785          specialized to deterministic operation (single stack, no 
1786          potential ambiguity).  */ 
1793           const short* yyconflicts
; 
1795           yyStateNum yystate 
= yystack
.yytops
.yystates
[0]->yylrState
; 
1796           if (yystate 
== YYFINAL
) 
1798           if (yyisDefaultedState (yystate
)) 
1800               yyrule 
= yydefaultAction (yystate
); 
1803                   yyreportParseError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[); 
1806               YYCHK1 (yyglrReduce (&yystack
, 0, yyrule
, yytrue
]b4_lpure_args
[)); 
1810               if (yytoken 
== YYEMPTY
) 
1812                   YYDPRINTF ((stderr
, "Reading a token: ")); 
1814                   yytoken 
= YYTRANSLATE (yychar
); 
1815                   YYDSYMPRINTF ("Next token is", yytoken
, yylvalp
, yyllocp
); 
1817               yygetLRActions (yystate
, yytoken
, &yyaction
, &yyconflicts
); 
1818               if (*yyconflicts 
!= 0) 
1820               if (yyisShiftAction (yyaction
)) 
1822                   YYDPRINTF ((stderr
, "Shifting token %s, ", 
1823                               yytokenName (yytoken
))); 
1824                   if (yytoken 
!= YYEOF
) 
1827                   yyglrShift (&yystack
, 0, yyaction
, yyposn
, 
1828                               yylval
, yyllocp
]b4_user_args
[); 
1829                   if (0 < yystack
.yyerrState
) 
1830                     yystack
.yyerrState 
-= 1; 
1831                   YYDPRINTF ((stderr
, "Entering state %d\n", 
1832                               yystack
.yytops
.yystates
[0]->yylrState
)); 
1834               else if (yyisErrorAction (yyaction
)) 
1836                   yyreportParseError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[); 
1840                 YYCHK1 (yyglrReduce (&yystack
, 0, -yyaction
, yytrue
]b4_lpure_args
[)); 
1847           int yyn 
= yystack
.yytops
.yysize
; 
1848           for (yys 
= 0; yys 
< yyn
; yys 
+= 1) 
1849             YYCHK1 (yyprocessOneStack (&yystack
, yys
, yyposn
, 
1850                                        yylvalp
, yyllocp
]b4_user_args
[)); 
1853           yyremoveDeletes (&yystack
); 
1854           if (yystack
.yytops
.yysize 
== 0) 
1856               yyundeleteLastStack (&yystack
); 
1857               if (yystack
.yytops
.yysize 
== 0) 
1858                 yyFail (&yystack
][]b4_lpure_args
[, "parse error"); 
1859               YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[)); 
1860               YYDPRINTF ((stderr
, "Returning to deterministic operation.\n")); 
1861               yyreportParseError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[); 
1864           else if (yystack
.yytops
.yysize 
== 1) 
1866               YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[)); 
1867               YYDPRINTF ((stderr
, "Returning to deterministic operation.\n")); 
1868               yycompressStack (&yystack
); 
1874       yyrecoverParseError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[); 
1875       yyposn 
= yystack
.yytops
.yystates
[0]->yyposn
; 
1880   yyfreeGLRStack (&yystack
); 
1881   return yystack
.yyerrflag
; 
1884 /* DEBUGGING ONLY */ 
1885 static void yypstack (yyGLRStack
* yystack
, int yyk
) ATTRIBUTE_UNUSED
; 
1886 static void yypdumpstack (yyGLRStack
* yystack
) ATTRIBUTE_UNUSED
; 
1889 yy_yypstack (yyGLRState
* yys
) 
1893       yy_yypstack (yys
->yypred
); 
1894       fprintf (stderr
, " -> "); 
1896   fprintf (stderr
, "%d@@%lu", yys
->yylrState
, (unsigned long) yys
->yyposn
); 
1900 yypstates (yyGLRState
* yyst
) 
1903     fprintf (stderr
, "<null>"); 
1906   fprintf (stderr
, "\n"); 
1910 yypstack (yyGLRStack
* yystack
, int yyk
) 
1912   yypstates (yystack
->yytops
.yystates
[yyk
]); 
1915 #define YYINDEX(YYX)                                                         \ 
1916     ((YYX) == NULL ? -1 : (yyGLRStackItem*) (YYX) - yystack->yyitems) 
1920 yypdumpstack (yyGLRStack
* yystack
) 
1922   yyGLRStackItem
* yyp
; 
1924   for (yyp 
= yystack
->yyitems
; yyp 
< yystack
->yynextFree
; yyp 
+= 1) 
1926       fprintf (stderr
, "%3lu. ", (unsigned long) (yyp 
- yystack
->yyitems
)); 
1929           fprintf (stderr
, "Res: %d, LR State: %d, posn: %lu, pred: %ld", 
1930                    yyp
->yystate
.yyresolved
, yyp
->yystate
.yylrState
, 
1931                    (unsigned long) yyp
->yystate
.yyposn
, 
1932                    (long) YYINDEX (yyp
->yystate
.yypred
)); 
1933           if (! yyp
->yystate
.yyresolved
) 
1934             fprintf (stderr
, ", firstVal: %ld", 
1935                      (long) YYINDEX (yyp
->yystate
.yysemantics
.yyfirstVal
)); 
1939           fprintf (stderr
, "Option. rule: %d, state: %ld, next: %ld", 
1940                    yyp
->yyoption
.yyrule
, 
1941                    (long) YYINDEX (yyp
->yyoption
.yystate
), 
1942                    (long) YYINDEX (yyp
->yyoption
.yynext
)); 
1944       fprintf (stderr
, "\n"); 
1946   fprintf (stderr
, "Tops:"); 
1947   for (yyi 
= 0; yyi 
< yystack
->yytops
.yysize
; yyi 
+= 1) 
1948     fprintf (stderr
, "%lu: %ld; ", (unsigned long) yyi
, 
1949              (long) YYINDEX (yystack
->yytops
.yystates
[yyi
])); 
1950   fprintf (stderr
, "\n"); 
1955 m4_if(b4_defines_flag
, 0, [], 
1956 [@output @output_header_name@
 
1957 b4_copyright([Skeleton parser 
for GLR parsing with Bison
], [2002]) 
1959 b4_token_defines(b4_tokens
) 
1962 m4_ifdef([b4_stype
], 
1963 [b4_syncline([b4_stype_line
], [b4_filename
]) 
1964 typedef union b4_stype yystype
; 
1965 /* Line __line__ of __file__.  */ 
1966 b4_syncline([@oline@
], [@ofile@
])], 
1967 [typedef int yystype
;]) 
1968 # define YYSTYPE yystype 
1969 # define YYSTYPE_IS_TRIVIAL 1 
1973 [extern YYSTYPE b4_prefix
[]lval
;]) 
1977 typedef struct yyltype
 
1984 # define YYLTYPE yyltype 
1988 [extern YYLTYPE b4_prefix
[]lloc
;])