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