]> git.saurik.com Git - bison.git/blame - data/lalr1.cc
lalr1.cc: fix compiler warnings
[bison.git] / data / lalr1.cc
CommitLineData
60491a94 1# C++ skeleton for Bison
b4721715 2
c932d613 3# Copyright (C) 2002-2012 Free Software Foundation, Inc.
60491a94 4
f16b0819 5# This program is free software: you can redistribute it and/or modify
60491a94 6# it under the terms of the GNU General Public License as published by
f16b0819 7# the Free Software Foundation, either version 3 of the License, or
60491a94 8# (at your option) any later version.
f16b0819 9#
60491a94
AD
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13# GNU General Public License for more details.
f16b0819 14#
60491a94 15# You should have received a copy of the GNU General Public License
f16b0819 16# along with this program. If not, see <http://www.gnu.org/licenses/>.
60491a94 17
cf147260 18m4_include(b4_pkgdatadir/[c++.m4])
7eb8a0bc 19
6afc30cc 20m4_define([b4_parser_class_name],
a4e25e1d 21 [b4_percent_define_get([[parser_class_name]])])
34376418
AD
22
23# The header is mandatory.
24b4_defines_if([],
5f340b48 25 [b4_fatal([b4_skeleton[: using %%defines is mandatory]])])
34376418 26
db8ab2be 27b4_percent_define_ifdef([[api.location.type]], [],
95a2de56
AD
28 [# Backward compatibility.
29 m4_define([b4_location_constructors])
30 m4_include(b4_pkgdatadir/[location.cc])])
a9b67b5b 31m4_include(b4_pkgdatadir/[stack.hh])
a5eb1ed2 32
327afc7c 33b4_defines_if(
1c7ec959 34[b4_output_begin([b4_spec_defines_file])
193d7c70 35b4_copyright([Skeleton interface for Bison LALR(1) parsers in C++],
681dda24 36 [2002-2012])
8bb4c753 37[
03f1b545
AD
38/**
39 ** \file ]b4_spec_defines_file[
40 ** Define the ]b4_namespace_ref[::parser class.
41 */
42
af3412cd
PE
43/* C++ LALR(1) parser skeleton written by Akim Demaille. */
44
22172d47 45]b4_cpp_guard_open([b4_spec_defines_file])[
2b548aa6 46
a4e25e1d 47]b4_percent_code_get([[requires]])[
aef3da86 48
8d69a1a3 49#include <string>
717be197 50#include <iostream>
df5df58d 51#include "stack.hh"
db8ab2be 52]b4_percent_define_ifdef([[api.location.type]], [],
95a2de56 53 [[#include "location.hh"]])[
fc695704 54
5f108727 55]b4_YYDEBUG_define[
69e2658b 56
793fbca5 57]b4_namespace_open[
3f3eed27 58
efeed023 59 /// A Bison parser.
07fed891 60 class ]b4_parser_class_name[
2b548aa6 61 {
fb9712a9 62 public:
617a8f12 63 /// Symbol semantic values.
4b3847c3 64#ifndef ]b4_api_PREFIX[STYPE
fb9712a9 65]m4_ifdef([b4_stype],
1221b78a 66[ union semantic_type
7ecec4dd 67 {
8ec0a172 68b4_user_stype
7ecec4dd 69 };],
ddc8ede1
PE
70[m4_if(b4_tag_seen_flag, 0,
71[[ typedef int semantic_type;]],
4b3847c3 72[[ typedef ]b4_api_PREFIX[STYPE semantic_type;]])])[
fb9712a9 73#else
4b3847c3 74 typedef ]b4_api_PREFIX[STYPE semantic_type;
fb9712a9 75#endif
617a8f12 76 /// Symbol locations.
db8ab2be 77 typedef ]b4_percent_define_get([[api.location.type]],
95a2de56 78 [[location]])[ location_type;
fb9712a9
AD
79 /// Tokens.
80 struct token
81 {
82 ]b4_token_enums(b4_tokens)[
83 };
c095d689
AD
84 /// Token type.
85 typedef token::yytokentype token_type;
2b548aa6 86
efeed023 87 /// Build a parser object.
98ae9643
AD
88 ]b4_parser_class_name[ (]b4_parse_param_decl[);
89 virtual ~]b4_parser_class_name[ ();
2b548aa6 90
f69a4142
AD
91 /// Parse.
92 /// \returns 0 iff parsing succeeded.
e019c247 93 virtual int parse ();
2b548aa6 94
5f108727 95#if ]b4_api_PREFIX[DEBUG
f69a4142 96 /// The current debugging stream.
9a1e9989
AD
97 std::ostream& debug_stream () const;
98 /// Set the current debugging stream.
99 void set_debug_stream (std::ostream &);
100
a3cb6248
AD
101 /// Type for debugging levels.
102 typedef int debug_level_type;
103 /// The current debugging level.
104 debug_level_type debug_level () const;
105 /// Set the current debugging level.
106 void set_debug_level (debug_level_type l);
52cbbe84 107#endif
a3cb6248 108
2b548aa6 109 private:
e83be476
AD
110 /// This class is not copyable.
111 ]b4_parser_class_name[ (const ]b4_parser_class_name[&);
112 ]b4_parser_class_name[& operator= (const ]b4_parser_class_name[&);
113
efeed023
AD
114 /// Report a syntax error.
115 /// \param loc where the syntax error is found.
116 /// \param msg a description of the syntax error.
99880de5 117 virtual void error (const location_type& loc, const std::string& msg);
efeed023 118
dbcdae2d 119 /// Generate an error message.
d4fb5e3c 120 /// \param state the state where the error occurred.
742e4900 121 /// \param tok the lookahead token.
1e05521d 122 virtual std::string yysyntax_error_ (int yystate, int tok);
efeed023 123
5f108727 124#if ]b4_api_PREFIX[DEBUG
a0af42fc
AD
125 /// \brief Report a symbol value on the debug stream.
126 /// \param yytype The token type.
127 /// \param yyvaluep Its semantic value.
128 /// \param yylocationp Its location.
129 virtual void yy_symbol_value_print_ (int yytype,
02650b7f
PE
130 const semantic_type* yyvaluep,
131 const location_type* yylocationp);
f69a4142
AD
132 /// \brief Report a symbol on the debug stream.
133 /// \param yytype The token type.
134 /// \param yyvaluep Its semantic value.
135 /// \param yylocationp Its location.
a0af42fc 136 virtual void yy_symbol_print_ (int yytype,
02650b7f
PE
137 const semantic_type* yyvaluep,
138 const location_type* yylocationp);
fa7b79c0 139#endif
a5eb1ed2 140
4bb2bc3f 141
e019c247 142 /// State numbers.
f479c6c6 143 typedef int state_type;
e019c247
AD
144 /// State stack type.
145 typedef stack<state_type> state_stack_type;
146 /// Semantic value stack type.
147 typedef stack<semantic_type> semantic_stack_type;
148 /// location stack type.
149 typedef stack<location_type> location_stack_type;
150
f69a4142 151 /// The state stack.
e019c247 152 state_stack_type yystate_stack_;
f69a4142 153 /// The semantic value stack.
e019c247 154 semantic_stack_type yysemantic_stack_;
f69a4142 155 /// The location stack.
e019c247 156 location_stack_type yylocation_stack_;
2b548aa6 157
d5eb0826
JD
158 /// Whether the given \c yypact_ value indicates a defaulted state.
159 /// \param yyvalue the value to check
160 static bool yy_pact_value_is_default_ (int yyvalue);
161
162 /// Whether the given \c yytable_ value indicates a syntax error.
163 /// \param yyvalue the value to check
164 static bool yy_table_value_is_error_ (int yyvalue);
165
e019c247 166 /// Internal symbol numbers.
f479c6c6 167 typedef ]b4_int_type_for([b4_translate])[ token_number_type;
2b548aa6 168 /* Tables. */
efeed023 169 /// For a state, the index in \a yytable_ of its portion.
617a8f12
AD
170 static const ]b4_int_type_for([b4_pact])[ yypact_[];
171 static const ]b4_int_type(b4_pact_ninf, b4_pact_ninf)[ yypact_ninf_;
efeed023 172
620b5727 173 /// For a state, default reduction number.
efeed023
AD
174 /// Unless\a yytable_ specifies something else to do.
175 /// Zero means the default is an error.
617a8f12 176 static const ]b4_int_type_for([b4_defact])[ yydefact_[];
efeed023 177
617a8f12
AD
178 static const ]b4_int_type_for([b4_pgoto])[ yypgoto_[];
179 static const ]b4_int_type_for([b4_defgoto])[ yydefgoto_[];
efeed023
AD
180
181 /// What to do in a state.
182 /// \a yytable_[yypact_[s]]: what to do in state \a s.
183 /// - if positive, shift that token.
184 /// - if negative, reduce the rule which number is the opposite.
185 /// - if zero, do what YYDEFACT says.
617a8f12
AD
186 static const ]b4_int_type_for([b4_table])[ yytable_[];
187 static const ]b4_int_type(b4_table_ninf, b4_table_ninf)[ yytable_ninf_;
efeed023 188
617a8f12 189 static const ]b4_int_type_for([b4_check])[ yycheck_[];
efeed023
AD
190
191 /// For a state, its accessing symbol.
617a8f12 192 static const ]b4_int_type_for([b4_stos])[ yystos_[];
efeed023
AD
193
194 /// For a rule, its LHS.
617a8f12 195 static const ]b4_int_type_for([b4_r1])[ yyr1_[];
efeed023 196 /// For a rule, its RHS length.
258cddbc 197 static const ]b4_int_type_for([b4_r2])[ yyr2_[]; ]b4_error_verbose_if([
9e0876fb 198
9e0876fb 199 /// Convert the symbol name \a n to a form suitable for a diagnostic.
39f6a8d1 200 static std::string yytnamerr_ (const char *n);])[
2b548aa6 201
5f108727 202]b4_token_table_if([], [[#if ]b4_api_PREFIX[DEBUG]])[
258cddbc
AD
203 /// For a symbol, its name in clear.
204 static const char* const yytname_[];
5f108727 205]b4_token_table_if([[#if ]b4_api_PREFIX[DEBUG]])[
e019c247 206 /// A type to store symbol numbers and -1.
f479c6c6 207 typedef ]b4_int_type_for([b4_rhs])[ rhs_number_type;
617a8f12 208 /// A `-1'-separated list of the rules' RHS.
99880de5 209 static const rhs_number_type yyrhs_[];
617a8f12
AD
210 /// For each rule, the index of the first RHS symbol in \a yyrhs_.
211 static const ]b4_int_type_for([b4_prhs])[ yyprhs_[];
212 /// For each rule, its source line number.
213 static const ]b4_int_type_for([b4_rline])[ yyrline_[];
214 /// For each scanner token number, its symbol number.
215 static const ]b4_int_type_for([b4_toknum])[ yytoken_number_[];
efeed023 216 /// Report on the debug stream that the rule \a r is going to be reduced.
d1ff7a7c 217 virtual void yy_reduce_print_ (int r);
efeed023 218 /// Print the state stack on the debug stream.
f69a4142 219 virtual void yystack_print_ ();
fa7b79c0
PE
220
221 /* Debugging. */
222 int yydebug_;
223 std::ostream* yycdebug_;
69e2658b 224#endif
2b548aa6 225
32c96bd7
AD
226 /// Convert a scanner token number \a t to a symbol number.
227 token_number_type yytranslate_ (int t);
f69a4142
AD
228
229 /// \brief Reclaim the memory associated to a symbol.
230 /// \param yymsg Why this token is reclaimed.
25a6ad2f 231 /// If null, do not display the symbol, just free it.
f69a4142
AD
232 /// \param yytype The symbol type.
233 /// \param yyvaluep Its semantic value.
234 /// \param yylocationp Its location.
235 inline void yydestruct_ (const char* yymsg,
02650b7f
PE
236 int yytype,
237 semantic_type* yyvaluep,
238 location_type* yylocationp);
2b548aa6 239
52d5733f 240 /// Pop \a n symbols the three stacks.
f69a4142 241 inline void yypop_ (unsigned int n = 1);
52d5733f 242
762a801e 243 /* Constants. */
617a8f12 244 static const int yyeof_;
39912f52 245 /* LAST_ -- Last index in TABLE_. */
617a8f12
AD
246 static const int yylast_;
247 static const int yynnts_;
248 static const int yyempty_;
249 static const int yyfinal_;
250 static const int yyterror_;
251 static const int yyerrcode_;
252 static const int yyntokens_;
253 static const unsigned int yyuser_token_number_max_;
99880de5 254 static const token_number_type yyundef_token_;
caf37a36 255]b4_parse_param_vars[
2b548aa6 256 };
793fbca5 257]b4_namespace_close[
2b548aa6 258
592d0b1e 259]b4_percent_define_flag_if([[global_tokens_and_yystype]],
fb9712a9
AD
260[b4_token_defines(b4_tokens)
261
4b3847c3 262#ifndef ]b4_api_PREFIX[STYPE
9d9b8b70 263 /* Redirection for backward compatibility. */
4b3847c3 264# define ]b4_api_PREFIX[STYPE b4_namespace_ref::b4_parser_class_name::semantic_type
fb9712a9 265#endif
22172d47
AD
266])[
267]b4_percent_code_get([[provides]])[
268]b4_cpp_guard_close([b4_spec_defines_file])
1c7ec959
AD
269b4_output_end()
270])
271
272
273b4_output_begin([b4_parser_file_name])
193d7c70 274b4_copyright([Skeleton implementation for Bison LALR(1) parsers in C++],
681dda24 275 [2002-2012])
a4e25e1d 276b4_percent_code_get([[top]])[]dnl
aa08666d 277m4_if(b4_prefix, [yy], [],
c5b95ccf
AD
278[
279// Take the name prefix into account.
9bc0dd67
JD
280#define yylex b4_prefix[]lex])[
281
282/* First part of user declarations. */
771dc643 283]b4_user_pre_prologue[
9bc0dd67 284
771dc643 285]b4_defines_if([[
bd9d212b 286#include "@basename(]b4_spec_defines_file[@)"]])[
50997c6e 287
fb9712a9 288/* User implementation prologue. */
771dc643
AD
289]b4_user_post_prologue[
290]b4_percent_code_get[
291
292]b4_null_define[
fb9712a9 293
771dc643 294#ifndef YY_
06caf0e1 295# if defined YYENABLE_NLS && YYENABLE_NLS
30757c8c
PE
296# if ENABLE_NLS
297# include <libintl.h> /* FIXME: INFRINGES ON USER NAME SPACE */
298# define YY_(msgid) dgettext ("bison-runtime", msgid)
299# endif
300# endif
301# ifndef YY_
302# define YY_(msgid) msgid
303# endif
989b5b8e
AD
304#endif
305
3d4a0cad 306#define YYRHSLOC(Rhs, K) ((Rhs)[K])
426903aa 307]b4_yylloc_default_define[
3d4a0cad 308
2a4647a3 309/* Suppress unused-variable warnings by "using" E. */
12ce2df6 310#define YYUSE(e) ((void) (e))
2a4647a3 311
2b548aa6 312/* Enable debugging if requested. */
5f108727 313#if ]b4_api_PREFIX[DEBUG
284acc8b 314
fa7b79c0
PE
315/* A pseudo ostream that takes yydebug_ into account. */
316# define YYCDEBUG if (yydebug_) (*yycdebug_)
317
284acc8b
AD
318# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
319do { \
a3cb6248 320 if (yydebug_) \
284acc8b 321 { \
d1ff7a7c 322 *yycdebug_ << Title << ' '; \
a0af42fc 323 yy_symbol_print_ ((Type), (Value), (Location)); \
9a1e9989 324 *yycdebug_ << std::endl; \
284acc8b 325 } \
2a4647a3 326} while (false)
284acc8b 327
5348bfbe
AD
328# define YY_REDUCE_PRINT(Rule) \
329do { \
a3cb6248 330 if (yydebug_) \
d1ff7a7c 331 yy_reduce_print_ (Rule); \
2a4647a3 332} while (false)
284acc8b 333
25f66e1a
AD
334# define YY_STACK_PRINT() \
335do { \
a3cb6248 336 if (yydebug_) \
f69a4142 337 yystack_print_ (); \
2a4647a3 338} while (false)
284acc8b 339
5f108727 340#else /* !]b4_api_PREFIX[DEBUG */
284acc8b 341
a36b333c 342# define YYCDEBUG if (false) std::cerr
88322b77
AD
343# define YY_SYMBOL_PRINT(Title, Type, Value, Location) YYUSE(Type)
344# define YY_REDUCE_PRINT(Rule) static_cast<void>(0)
345# define YY_STACK_PRINT() static_cast<void>(0)
284acc8b 346
5f108727 347#endif /* !]b4_api_PREFIX[DEBUG */
2b548aa6 348
98e26a92
AD
349#define yyerrok (yyerrstatus_ = 0)
350#define yyclearin (yychar = yyempty_)
351
60a777aa
AD
352#define YYACCEPT goto yyacceptlab
353#define YYABORT goto yyabortlab
47301314 354#define YYERROR goto yyerrorlab
98e26a92 355#define YYRECOVERING() (!!yyerrstatus_)
60a777aa 356
39f6a8d1 357]b4_namespace_open[]b4_error_verbose_if([[
9e0876fb 358
aa08666d
AD
359 /* Return YYSTR after stripping away unnecessary quotes and
360 backslashes, so that it's suitable for yyerror. The heuristic is
361 that double-quoting is unnecessary unless the string contains an
362 apostrophe, a comma, or backslash (other than backslash-backslash).
363 YYSTR is taken from yytname. */
364 std::string
365 ]b4_parser_class_name[::yytnamerr_ (const char *yystr)
366 {
367 if (*yystr == '"')
368 {
369 std::string yyr = "";
370 char const *yyp = yystr;
193d7c70 371
aa08666d
AD
372 for (;;)
373 switch (*++yyp)
374 {
375 case '\'':
376 case ',':
377 goto do_not_strip_quotes;
193d7c70 378
aa08666d
AD
379 case '\\':
380 if (*++yyp != '\\')
381 goto do_not_strip_quotes;
382 /* Fall through. */
383 default:
384 yyr += *yyp;
385 break;
193d7c70 386
aa08666d
AD
387 case '"':
388 return yyr;
389 }
390 do_not_strip_quotes: ;
391 }
193d7c70 392
aa08666d
AD
393 return yystr;
394 }
39f6a8d1 395]])[
9e0876fb 396
98ae9643 397 /// Build a parser object.
fa7b79c0
PE
398 ]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[)]m4_ifset([b4_parse_param], [
399 :])[
5f108727 400#if ]b4_api_PREFIX[DEBUG
fa7b79c0
PE
401 ]m4_ifset([b4_parse_param], [ ], [ :])[yydebug_ (false),
402 yycdebug_ (&std::cerr)]m4_ifset([b4_parse_param], [,])[
403#endif]b4_parse_param_cons[
98ae9643
AD
404 {
405 }
a0e68930 406
98ae9643
AD
407 ]b4_parser_class_name::~b4_parser_class_name[ ()
408 {
409 }
a0e68930 410
5f108727 411#if ]b4_api_PREFIX[DEBUG
98ae9643
AD
412 /*--------------------------------.
413 | Print this symbol on YYOUTPUT. |
414 `--------------------------------*/
a0e68930 415
a0af42fc
AD
416 inline void
417 ]b4_parser_class_name[::yy_symbol_value_print_ (int yytype,
02650b7f 418 const semantic_type* yyvaluep, const location_type* yylocationp)
98ae9643 419 {
98ae9643
AD
420 YYUSE (yylocationp);
421 YYUSE (yyvaluep);
68fff38a
AD
422 std::ostream& yyo = debug_stream ();
423 std::ostream& yyoutput = yyo;
424 YYUSE (yyoutput);
98ae9643
AD
425 switch (yytype)
426 {
427 ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
428[ default:
02650b7f 429 break;
98ae9643 430 }
a0af42fc
AD
431 }
432
433
434 void
435 ]b4_parser_class_name[::yy_symbol_print_ (int yytype,
02650b7f 436 const semantic_type* yyvaluep, const location_type* yylocationp)
a0af42fc
AD
437 {
438 *yycdebug_ << (yytype < yyntokens_ ? "token" : "nterm")
02650b7f
PE
439 << ' ' << yytname_[yytype] << " ("
440 << *yylocationp << ": ";
a0af42fc 441 yy_symbol_value_print_ (yytype, yyvaluep, yylocationp);
98ae9643
AD
442 *yycdebug_ << ')';
443 }
fa7b79c0 444#endif
a0e68930 445
98ae9643
AD
446 void
447 ]b4_parser_class_name[::yydestruct_ (const char* yymsg,
02650b7f 448 int yytype, semantic_type* yyvaluep, location_type* yylocationp)
98ae9643
AD
449 {
450 YYUSE (yylocationp);
451 YYUSE (yymsg);
452 YYUSE (yyvaluep);
453
25a6ad2f
AD
454 if (yymsg)
455 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
98ae9643
AD
456
457 switch (yytype)
458 {
459 ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[
02650b7f
PE
460 default:
461 break;
98ae9643
AD
462 }
463 }
60a777aa 464
98ae9643
AD
465 void
466 ]b4_parser_class_name[::yypop_ (unsigned int n)
467 {
468 yystate_stack_.pop (n);
469 yysemantic_stack_.pop (n);
470 yylocation_stack_.pop (n);
471 }
52d5733f 472
5f108727 473#if ]b4_api_PREFIX[DEBUG
98ae9643
AD
474 std::ostream&
475 ]b4_parser_class_name[::debug_stream () const
476 {
477 return *yycdebug_;
478 }
9a1e9989 479
98ae9643
AD
480 void
481 ]b4_parser_class_name[::set_debug_stream (std::ostream& o)
482 {
483 yycdebug_ = &o;
484 }
9a1e9989
AD
485
486
98ae9643
AD
487 ]b4_parser_class_name[::debug_level_type
488 ]b4_parser_class_name[::debug_level () const
489 {
490 return yydebug_;
491 }
a3cb6248 492
98ae9643
AD
493 void
494 ]b4_parser_class_name[::set_debug_level (debug_level_type l)
495 {
496 yydebug_ = l;
497 }
fa7b79c0 498#endif
a3cb6248 499
d5eb0826
JD
500 inline bool
501 ]b4_parser_class_name[::yy_pact_value_is_default_ (int yyvalue)
502 {
503 return yyvalue == yypact_ninf_;
504 }
505
506 inline bool
507 ]b4_parser_class_name[::yy_table_value_is_error_ (int yyvalue)
508 {
e4bcae3c 509 return yyvalue == yytable_ninf_;
d5eb0826
JD
510 }
511
98ae9643
AD
512 int
513 ]b4_parser_class_name[::parse ()
514 {
742e4900 515 /// Lookahead and lookahead in internal form.
98ae9643
AD
516 int yychar = yyempty_;
517 int yytoken = 0;
d4fb5e3c 518
b720fedf 519 // State.
98ae9643 520 int yyn;
a85284cf 521 int yylen = 0;
98ae9643 522 int yystate = 0;
d4fb5e3c 523
b720fedf 524 // Error handling.
98ae9643
AD
525 int yynerrs_ = 0;
526 int yyerrstatus_ = 0;
dbcdae2d 527
742e4900 528 /// Semantic value of the lookahead.
41a4806a
AD
529 static semantic_type yyval_default;
530 semantic_type yylval = yyval_default;
742e4900 531 /// Location of the lookahead.
98ae9643
AD
532 location_type yylloc;
533 /// The locations where the error started and ended.
a005dbcb 534 location_type yyerror_range[3];
dbcdae2d 535
98ae9643
AD
536 /// $$.
537 semantic_type yyval;
538 /// @@$.
539 location_type yyloc;
dbcdae2d 540
98ae9643 541 int yyresult;
ad745863 542
7e1fabbe
AD
543 // FIXME: This shoud be completely indented. It is not yet to
544 // avoid gratuitous conflicts when merging into the master branch.
545 try
546 {
98ae9643 547 YYCDEBUG << "Starting parse" << std::endl;
451364ed 548
451364ed 549]m4_ifdef([b4_initial_action], [
cd735a8c
AD
550b4_dollar_pushdef([yylval], [], [yylloc])dnl
551/* User initialization code. */
552b4_user_initial_action
553b4_dollar_popdef])[]dnl
451364ed 554
98ae9643
AD
555 [ /* Initialize the stacks. The initial state will be pushed in
556 yynewstate, since the latter expects the semantical and the
557 location values to have been already stored, initialize these
558 stacks with a primary value. */
e83be476
AD
559 yystate_stack_.clear ();
560 yysemantic_stack_.clear ();
561 yylocation_stack_.clear ();
98ae9643
AD
562 yysemantic_stack_.push (yylval);
563 yylocation_stack_.push (yylloc);
564
565 /* New state. */
566 yynewstate:
567 yystate_stack_.push (yystate);
568 YYCDEBUG << "Entering state " << yystate << std::endl;
868d2d96
JD
569
570 /* Accept? */
571 if (yystate == yyfinal_)
572 goto yyacceptlab;
573
98ae9643
AD
574 goto yybackup;
575
576 /* Backup. */
577 yybackup:
578
742e4900 579 /* Try to take a decision without lookahead. */
98ae9643 580 yyn = yypact_[yystate];
d5eb0826 581 if (yy_pact_value_is_default_ (yyn))
98ae9643
AD
582 goto yydefault;
583
742e4900 584 /* Read a lookahead token. */
98ae9643
AD
585 if (yychar == yyempty_)
586 {
7e1fabbe
AD
587 YYCDEBUG << "Reading a token: ";
588 yychar = ]b4_c_function_call([yylex], [int],
589 [b4_api_PREFIX[STYPE*], [&yylval]][]dnl
327afc7c 590b4_locations_if([, [[location*], [&yylloc]]])dnl
dbcdae2d 591m4_ifdef([b4_lex_param], [, ]b4_lex_param))[;
98ae9643
AD
592 }
593
98ae9643
AD
594 /* Convert token to internal form. */
595 if (yychar <= yyeof_)
596 {
02650b7f
PE
597 yychar = yytoken = yyeof_;
598 YYCDEBUG << "Now at end of input." << std::endl;
98ae9643
AD
599 }
600 else
601 {
02650b7f
PE
602 yytoken = yytranslate_ (yychar);
603 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
98ae9643
AD
604 }
605
606 /* If the proper action on seeing token YYTOKEN is to reduce or to
607 detect an error, take that action. */
608 yyn += yytoken;
34ec3579 609 if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yytoken)
98ae9643
AD
610 goto yydefault;
611
612 /* Reduce or error. */
613 yyn = yytable_[yyn];
614 if (yyn <= 0)
615 {
d5eb0826
JD
616 if (yy_table_value_is_error_ (yyn))
617 goto yyerrlab;
02650b7f
PE
618 yyn = -yyn;
619 goto yyreduce;
98ae9643
AD
620 }
621
742e4900 622 /* Shift the lookahead token. */
98ae9643
AD
623 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
624
868d2d96
JD
625 /* Discard the token being shifted. */
626 yychar = yyempty_;
98ae9643
AD
627
628 yysemantic_stack_.push (yylval);
629 yylocation_stack_.push (yylloc);
630
631 /* Count tokens shifted since error; after three, turn off error
632 status. */
633 if (yyerrstatus_)
634 --yyerrstatus_;
635
636 yystate = yyn;
637 goto yynewstate;
638
639 /*-----------------------------------------------------------.
640 | yydefault -- do the default action for the current state. |
641 `-----------------------------------------------------------*/
642 yydefault:
643 yyn = yydefact_[yystate];
644 if (yyn == 0)
645 goto yyerrlab;
646 goto yyreduce;
647
648 /*-----------------------------.
649 | yyreduce -- Do a reduction. |
650 `-----------------------------*/
651 yyreduce:
652 yylen = yyr2_[yyn];
a85284cf 653 /* If YYLEN is nonzero, implement the default value of the action:
98ae9643
AD
654 `$$ = $1'. Otherwise, use the top of the stack.
655
656 Otherwise, the following line sets YYVAL to garbage.
657 This behavior is undocumented and Bison
658 users should not rely upon it. */
659 if (yylen)
660 yyval = yysemantic_stack_[yylen - 1];
661 else
662 yyval = yysemantic_stack_[0];
2b548aa6 663
7e1fabbe 664 // Compute the default @@$.
2b548aa6 665 {
98ae9643
AD
666 slice<location_type, location_stack_type> slice (yylocation_stack_, yylen);
667 YYLLOC_DEFAULT (yyloc, slice, yylen);
2b548aa6 668 }
7e1fabbe
AD
669
670 // Perform the reduction.
98ae9643
AD
671 YY_REDUCE_PRINT (yyn);
672 switch (yyn)
673 {
7e1fabbe
AD
674 ]b4_user_actions[
675 default:
676 break;
98ae9643 677 }
7e1fabbe 678
3b837882
JD
679 /* User semantic actions sometimes alter yychar, and that requires
680 that yytoken be updated with the new translation. We take the
681 approach of translating immediately before every use of yytoken.
682 One alternative is translating here after every semantic action,
683 but that translation would be missed if the semantic action
684 invokes YYABORT, YYACCEPT, or YYERROR immediately after altering
685 yychar. In the case of YYABORT or YYACCEPT, an incorrect
686 destructor might then be invoked immediately. In the case of
687 YYERROR, subsequent parser actions might lead to an incorrect
688 destructor call or verbose syntax error message before the
689 lookahead is translated. */
d1ff7a7c 690 YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc);
98ae9643
AD
691
692 yypop_ (yylen);
a85284cf 693 yylen = 0;
98ae9643
AD
694 YY_STACK_PRINT ();
695
696 yysemantic_stack_.push (yyval);
697 yylocation_stack_.push (yyloc);
698
699 /* Shift the result of the reduction. */
700 yyn = yyr1_[yyn];
701 yystate = yypgoto_[yyn - yyntokens_] + yystate_stack_[0];
702 if (0 <= yystate && yystate <= yylast_
34ec3579 703 && yycheck_[yystate] == yystate_stack_[0])
98ae9643
AD
704 yystate = yytable_[yystate];
705 else
706 yystate = yydefgoto_[yyn - yyntokens_];
707 goto yynewstate;
708
709 /*------------------------------------.
710 | yyerrlab -- here on detecting error |
711 `------------------------------------*/
712 yyerrlab:
3b837882
JD
713 /* Make sure we have latest lookahead translation. See comments at
714 user semantic actions for why this is necessary. */
715 yytoken = yytranslate_ (yychar);
716
98ae9643
AD
717 /* If not already recovering from an error, report this error. */
718 if (!yyerrstatus_)
719 {
02650b7f 720 ++yynerrs_;
095a1d11
JD
721 if (yychar == yyempty_)
722 yytoken = yyempty_;
1e05521d 723 error (yylloc, yysyntax_error_ (yystate, yytoken));
98ae9643
AD
724 }
725
a005dbcb 726 yyerror_range[1] = yylloc;
98ae9643
AD
727 if (yyerrstatus_ == 3)
728 {
117c7942
AD
729 /* If just tried and failed to reuse lookahead token after an
730 error, discard it. */
731 if (yychar <= yyeof_)
732 {
733 /* Return failure if at end of input. */
734 if (yychar == yyeof_)
735 YYABORT;
736 }
737 else
738 {
739 yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
740 yychar = yyempty_;
741 }
98ae9643
AD
742 }
743
742e4900 744 /* Else will try to reuse lookahead token after shifting the error
98ae9643
AD
745 token. */
746 goto yyerrlab1;
747
748
749 /*---------------------------------------------------.
750 | yyerrorlab -- error raised explicitly by YYERROR. |
751 `---------------------------------------------------*/
752 yyerrorlab:
753
754 /* Pacify compilers like GCC when the user code never invokes
755 YYERROR and the label yyerrorlab therefore never appears in user
756 code. */
757 if (false)
758 goto yyerrorlab;
759
a005dbcb 760 yyerror_range[1] = yylocation_stack_[yylen - 1];
a85284cf 761 /* Do not reclaim the symbols of the rule which action triggered
9d9b8b70 762 this YYERROR. */
98ae9643 763 yypop_ (yylen);
a85284cf 764 yylen = 0;
98ae9643
AD
765 yystate = yystate_stack_[0];
766 goto yyerrlab1;
767
768 /*-------------------------------------------------------------.
769 | yyerrlab1 -- common code for both syntax error and YYERROR. |
770 `-------------------------------------------------------------*/
771 yyerrlab1:
772 yyerrstatus_ = 3; /* Each real token shifted decrements this. */
773
774 for (;;)
775 {
02650b7f 776 yyn = yypact_[yystate];
d5eb0826 777 if (!yy_pact_value_is_default_ (yyn))
02650b7f
PE
778 {
779 yyn += yyterror_;
34ec3579 780 if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
02650b7f
PE
781 {
782 yyn = yytable_[yyn];
783 if (0 < yyn)
784 break;
785 }
786 }
787
788 /* Pop the current state because it cannot handle the error token. */
789 if (yystate_stack_.height () == 1)
117c7942 790 YYABORT;
02650b7f 791
a005dbcb 792 yyerror_range[1] = yylocation_stack_[0];
02650b7f
PE
793 yydestruct_ ("Error: popping",
794 yystos_[yystate],
795 &yysemantic_stack_[0], &yylocation_stack_[0]);
796 yypop_ ();
797 yystate = yystate_stack_[0];
798 YY_STACK_PRINT ();
98ae9643
AD
799 }
800
a005dbcb 801 yyerror_range[2] = yylloc;
98ae9643 802 // Using YYLLOC is tempting, but would change the location of
742e4900 803 // the lookahead. YYLOC is available though.
a005dbcb 804 YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
98ae9643
AD
805 yysemantic_stack_.push (yylval);
806 yylocation_stack_.push (yyloc);
807
9d9b8b70 808 /* Shift the error token. */
98ae9643 809 YY_SYMBOL_PRINT ("Shifting", yystos_[yyn],
482dc52f 810 &yysemantic_stack_[0], &yylocation_stack_[0]);
98ae9643
AD
811
812 yystate = yyn;
813 goto yynewstate;
814
815 /* Accept. */
816 yyacceptlab:
817 yyresult = 0;
818 goto yyreturn;
819
820 /* Abort. */
821 yyabortlab:
822 yyresult = 1;
823 goto yyreturn;
824
825 yyreturn:
868d2d96 826 if (yychar != yyempty_)
3b837882
JD
827 {
828 /* Make sure we have latest lookahead translation. See comments
829 at user semantic actions for why this is necessary. */
830 yytoken = yytranslate_ (yychar);
831 yydestruct_ ("Cleanup: discarding lookahead", yytoken, &yylval,
832 &yylloc);
833 }
98ae9643 834
a85284cf 835 /* Do not reclaim the symbols of the rule which action triggered
9d9b8b70 836 this YYABORT or YYACCEPT. */
a85284cf 837 yypop_ (yylen);
a2642464 838 while (1 < yystate_stack_.height ())
98ae9643 839 {
117c7942
AD
840 yydestruct_ ("Cleanup: popping",
841 yystos_[yystate_stack_[0]],
842 &yysemantic_stack_[0],
843 &yylocation_stack_[0]);
844 yypop_ ();
98ae9643
AD
845 }
846
847 return yyresult;
7e1fabbe
AD
848 }
849 catch (...)
850 {
25a6ad2f
AD
851 YYCDEBUG << "Exception caught: cleaning lookahead and stack"
852 << std::endl;
853 // Do not try to display the values of the reclaimed symbols,
854 // as their printer might throw an exception.
7e1fabbe
AD
855 if (yychar != yyempty_)
856 {
857 /* Make sure we have latest lookahead translation. See
858 comments at user semantic actions for why this is
859 necessary. */
860 yytoken = yytranslate_ (yychar);
25a6ad2f 861 yydestruct_ (YY_NULL, yytoken, &yylval, &yylloc);
7e1fabbe
AD
862 }
863
a2642464 864 while (1 < yystate_stack_.height ())
7e1fabbe 865 {
25a6ad2f 866 yydestruct_ (YY_NULL,
7e1fabbe
AD
867 yystos_[yystate_stack_[0]],
868 &yysemantic_stack_[0],
869 &yylocation_stack_[0]);
870 yypop_ ();
871 }
872 throw;
873 }
98ae9643 874 }
2b548aa6 875
98ae9643
AD
876 // Generate an error message.
877 std::string
39f6a8d1
AD
878 ]b4_parser_class_name[::yysyntax_error_ (]dnl
879b4_error_verbose_if([int yystate, int yytoken],
880 [int, int])[)
678094a2
JD
881 {]b4_error_verbose_if([[
882 std::string yyres;
095a1d11
JD
883 // Number of reported tokens (one for the "unexpected", one per
884 // "expected").
885 size_t yycount = 0;
886 // Its maximum.
887 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
888 // Arguments of yyformat.
889 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
890
891 /* There are many possibilities here to consider:
892 - If this state is a consistent state with a default action, then
893 the only way this function was invoked is if the default action
894 is an error action. In that case, don't check for expected
895 tokens because there are none.
896 - The only way there can be no lookahead present (in yytoken) is
897 if this state is a consistent state with a default action.
898 Thus, detecting the absence of a lookahead is sufficient to
899 determine that there is no unexpected or expected token to
900 report. In that case, just report a simple "syntax error".
901 - Don't assume there isn't a lookahead just because this state is
902 a consistent state with a default action. There might have
903 been a previous inconsistent state, consistent state with a
904 non-default action, or user semantic action that manipulated
905 yychar.
906 - Of course, the expected token list depends on states to have
907 correct lookahead information, and it depends on the parser not
908 to perform extra reductions after fetching a lookahead from the
909 scanner and before detecting a syntax error. Thus, state
910 merging (from LALR or IELR) and default reductions corrupt the
911 expected token list. However, the list is correct for
912 canonical LR with one exception: it will still contain any
913 token that will not be accepted due to an error action in a
914 later state.
915 */
916 if (yytoken != yyempty_)
98ae9643 917 {
095a1d11
JD
918 yyarg[yycount++] = yytname_[yytoken];
919 int yyn = yypact_[yystate];
920 if (!yy_pact_value_is_default_ (yyn))
921 {
f953cb20
JD
922 /* Start YYX at -YYN if negative to avoid negative indexes in
923 YYCHECK. In other words, skip the first -YYN actions for
924 this state because they are default actions. */
925 int yyxbegin = yyn < 0 ? -yyn : 0;
f953cb20
JD
926 /* Stay within bounds of both yycheck and yytname. */
927 int yychecklim = yylast_ - yyn + 1;
928 int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
f953cb20
JD
929 for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
930 if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_
931 && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
932 {
933 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
934 {
935 yycount = 1;
936 break;
937 }
938 else
939 yyarg[yycount++] = yytname_[yyx];
940 }
095a1d11
JD
941 }
942 }
f953cb20 943
ef51bfa7 944 char const* yyformat = YY_NULL;
f953cb20
JD
945 switch (yycount)
946 {
947#define YYCASE_(N, S) \
948 case N: \
949 yyformat = S; \
950 break
095a1d11 951 YYCASE_(0, YY_("syntax error"));
f953cb20
JD
952 YYCASE_(1, YY_("syntax error, unexpected %s"));
953 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
954 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
955 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
956 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
e657f369 957#undef YYCASE_
98ae9643 958 }
095a1d11 959
f953cb20
JD
960 // Argument number.
961 size_t yyi = 0;
962 for (char const* yyp = yyformat; *yyp; ++yyp)
963 if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount)
964 {
965 yyres += yytnamerr_ (yyarg[yyi++]);
966 ++yyp;
967 }
968 else
969 yyres += *yyp;
678094a2
JD
970 return yyres;]], [[
971 return YY_("syntax error");]])[
98ae9643 972 }
a08460b0 973
5348bfbe 974
98ae9643
AD
975 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
976 STATE-NUM. */
977 const ]b4_int_type(b4_pact_ninf, b4_pact_ninf) b4_parser_class_name::yypact_ninf_ = b4_pact_ninf[;
978 const ]b4_int_type_for([b4_pact])[
979 ]b4_parser_class_name[::yypact_[] =
980 {
981 ]b4_pact[
982 };
2b548aa6 983
620b5727
JD
984 /* YYDEFACT[S] -- default reduction number in state S. Performed when
985 YYTABLE doesn't specify something else to do. Zero means the
986 default is an error. */
98ae9643
AD
987 const ]b4_int_type_for([b4_defact])[
988 ]b4_parser_class_name[::yydefact_[] =
989 {
990 ]b4_defact[
991 };
2b548aa6 992
98ae9643
AD
993 /* YYPGOTO[NTERM-NUM]. */
994 const ]b4_int_type_for([b4_pgoto])[
995 ]b4_parser_class_name[::yypgoto_[] =
996 {
997 ]b4_pgoto[
998 };
2b548aa6 999
98ae9643
AD
1000 /* YYDEFGOTO[NTERM-NUM]. */
1001 const ]b4_int_type_for([b4_defgoto])[
1002 ]b4_parser_class_name[::yydefgoto_[] =
1003 {
1004 ]b4_defgoto[
1005 };
2b548aa6 1006
98ae9643
AD
1007 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
1008 positive, shift that token. If negative, reduce the rule which
e4bcae3c 1009 number is the opposite. If YYTABLE_NINF_, syntax error. */
98ae9643
AD
1010 const ]b4_int_type(b4_table_ninf, b4_table_ninf) b4_parser_class_name::yytable_ninf_ = b4_table_ninf[;
1011 const ]b4_int_type_for([b4_table])[
1012 ]b4_parser_class_name[::yytable_[] =
1013 {
1014 ]b4_table[
1015 };
1016
1017 /* YYCHECK. */
1018 const ]b4_int_type_for([b4_check])[
1019 ]b4_parser_class_name[::yycheck_[] =
1020 {
1021 ]b4_check[
1022 };
1023
1024 /* STOS_[STATE-NUM] -- The (internal number of the) accessing
1025 symbol of state STATE-NUM. */
1026 const ]b4_int_type_for([b4_stos])[
1027 ]b4_parser_class_name[::yystos_[] =
1028 {
1029 ]b4_stos[
1030 };
769b430f 1031
5f108727 1032#if ]b4_api_PREFIX[DEBUG
98ae9643
AD
1033 /* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding
1034 to YYLEX-NUM. */
1035 const ]b4_int_type_for([b4_toknum])[
1036 ]b4_parser_class_name[::yytoken_number_[] =
1037 {
1038 ]b4_toknum[
1039 };
769b430f
AD
1040#endif
1041
98ae9643
AD
1042 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1043 const ]b4_int_type_for([b4_r1])[
1044 ]b4_parser_class_name[::yyr1_[] =
1045 {
1046 ]b4_r1[
1047 };
2b548aa6 1048
98ae9643
AD
1049 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
1050 const ]b4_int_type_for([b4_r2])[
1051 ]b4_parser_class_name[::yyr2_[] =
1052 {
1053 ]b4_r2[
1054 };
2b548aa6 1055
5f108727 1056]b4_token_table_if([], [[#if ]b4_api_PREFIX[DEBUG]])[
98ae9643 1057 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
9d9b8b70 1058 First, the terminals, then, starting at \a yyntokens_, nonterminals. */
98ae9643
AD
1059 const char*
1060 const ]b4_parser_class_name[::yytname_[] =
1061 {
1062 ]b4_tname[
1063 };
2b548aa6 1064
5f108727 1065]b4_token_table_if([[#if ]b4_api_PREFIX[DEBUG]])[
9d9b8b70 1066 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
98ae9643
AD
1067 const ]b4_parser_class_name[::rhs_number_type
1068 ]b4_parser_class_name[::yyrhs_[] =
1069 {
1070 ]b4_rhs[
1071 };
2b548aa6 1072
98ae9643
AD
1073 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
1074 YYRHS. */
1075 const ]b4_int_type_for([b4_prhs])[
1076 ]b4_parser_class_name[::yyprhs_[] =
1077 {
1078 ]b4_prhs[
1079 };
2b548aa6 1080
98ae9643
AD
1081 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
1082 const ]b4_int_type_for([b4_rline])[
1083 ]b4_parser_class_name[::yyrline_[] =
1084 {
1085 ]b4_rline[
1086 };
5348bfbe 1087
98ae9643
AD
1088 // Print the state stack on the debug stream.
1089 void
1090 ]b4_parser_class_name[::yystack_print_ ()
1091 {
1092 *yycdebug_ << "Stack now";
1093 for (state_stack_type::const_iterator i = yystate_stack_.begin ();
02650b7f 1094 i != yystate_stack_.end (); ++i)
98ae9643
AD
1095 *yycdebug_ << ' ' << *i;
1096 *yycdebug_ << std::endl;
1097 }
25f66e1a 1098
98ae9643
AD
1099 // Report on the debug stream that the rule \a yyrule is going to be reduced.
1100 void
d1ff7a7c 1101 ]b4_parser_class_name[::yy_reduce_print_ (int yyrule)
98ae9643
AD
1102 {
1103 unsigned int yylno = yyrline_[yyrule];
d1ff7a7c 1104 int yynrhs = yyr2_[yyrule];
98ae9643
AD
1105 /* Print the symbols being reduced, and their result. */
1106 *yycdebug_ << "Reducing stack by rule " << yyrule - 1
7cff04b5 1107 << " (line " << yylno << "):" << std::endl;
d1ff7a7c
AD
1108 /* The symbols being reduced. */
1109 for (int yyi = 0; yyi < yynrhs; yyi++)
1110 YY_SYMBOL_PRINT (" $" << yyi + 1 << " =",
02650b7f
PE
1111 yyrhs_[yyprhs_[yyrule] + yyi],
1112 &]b4_rhs_value(yynrhs, yyi + 1)[,
1113 &]b4_rhs_location(yynrhs, yyi + 1)[);
98ae9643 1114 }
5f108727 1115#endif // ]b4_api_PREFIX[DEBUG
69e2658b 1116
98ae9643
AD
1117 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
1118 ]b4_parser_class_name[::token_number_type
32c96bd7 1119 ]b4_parser_class_name[::yytranslate_ (int t)
2b548aa6 1120 {
98ae9643
AD
1121 static
1122 const token_number_type
1123 translate_table[] =
1124 {
1125 ]b4_translate[
1126 };
32c96bd7
AD
1127 if ((unsigned int) t <= yyuser_token_number_max_)
1128 return translate_table[t];
98ae9643
AD
1129 else
1130 return yyundef_token_;
1131 }
1132
1133 const int ]b4_parser_class_name[::yyeof_ = 0;
1134 const int ]b4_parser_class_name[::yylast_ = ]b4_last[;
1135 const int ]b4_parser_class_name[::yynnts_ = ]b4_nterms_number[;
1136 const int ]b4_parser_class_name[::yyempty_ = -2;
1137 const int ]b4_parser_class_name[::yyfinal_ = ]b4_final_state_number[;
1138 const int ]b4_parser_class_name[::yyterror_ = 1;
1139 const int ]b4_parser_class_name[::yyerrcode_ = 256;
1140 const int ]b4_parser_class_name[::yyntokens_ = ]b4_tokens_number[;
1141
1142 const unsigned int ]b4_parser_class_name[::yyuser_token_number_max_ = ]b4_user_token_number_max[;
1143 const ]b4_parser_class_name[::token_number_type ]b4_parser_class_name[::yyundef_token_ = ]b4_undef_token_number[;
2b548aa6 1144
793fbca5 1145]b4_namespace_close[
dcd5344d 1146]b4_epilogue[]dnl
1c7ec959 1147b4_output_end()