]> git.saurik.com Git - bison.git/blame - data/lalr1.cc
m4: use a safer pattern to enable/disable output
[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:
efeed023
AD
110 /// Report a syntax error.
111 /// \param loc where the syntax error is found.
112 /// \param msg a description of the syntax error.
99880de5 113 virtual void error (const location_type& loc, const std::string& msg);
efeed023 114
dbcdae2d 115 /// Generate an error message.
d4fb5e3c 116 /// \param state the state where the error occurred.
742e4900 117 /// \param tok the lookahead token.
1e05521d 118 virtual std::string yysyntax_error_ (int yystate, int tok);
efeed023 119
5f108727 120#if ]b4_api_PREFIX[DEBUG
a0af42fc
AD
121 /// \brief Report a symbol value on the debug stream.
122 /// \param yytype The token type.
123 /// \param yyvaluep Its semantic value.
124 /// \param yylocationp Its location.
125 virtual void yy_symbol_value_print_ (int yytype,
02650b7f
PE
126 const semantic_type* yyvaluep,
127 const location_type* yylocationp);
f69a4142
AD
128 /// \brief Report a symbol on the debug stream.
129 /// \param yytype The token type.
130 /// \param yyvaluep Its semantic value.
131 /// \param yylocationp Its location.
a0af42fc 132 virtual void yy_symbol_print_ (int yytype,
02650b7f
PE
133 const semantic_type* yyvaluep,
134 const location_type* yylocationp);
fa7b79c0 135#endif
a5eb1ed2 136
4bb2bc3f 137
e019c247 138 /// State numbers.
f479c6c6 139 typedef int state_type;
e019c247
AD
140 /// State stack type.
141 typedef stack<state_type> state_stack_type;
142 /// Semantic value stack type.
143 typedef stack<semantic_type> semantic_stack_type;
144 /// location stack type.
145 typedef stack<location_type> location_stack_type;
146
f69a4142 147 /// The state stack.
e019c247 148 state_stack_type yystate_stack_;
f69a4142 149 /// The semantic value stack.
e019c247 150 semantic_stack_type yysemantic_stack_;
f69a4142 151 /// The location stack.
e019c247 152 location_stack_type yylocation_stack_;
2b548aa6 153
d5eb0826
JD
154 /// Whether the given \c yypact_ value indicates a defaulted state.
155 /// \param yyvalue the value to check
156 static bool yy_pact_value_is_default_ (int yyvalue);
157
158 /// Whether the given \c yytable_ value indicates a syntax error.
159 /// \param yyvalue the value to check
160 static bool yy_table_value_is_error_ (int yyvalue);
161
e019c247 162 /// Internal symbol numbers.
f479c6c6 163 typedef ]b4_int_type_for([b4_translate])[ token_number_type;
2b548aa6 164 /* Tables. */
efeed023 165 /// For a state, the index in \a yytable_ of its portion.
617a8f12
AD
166 static const ]b4_int_type_for([b4_pact])[ yypact_[];
167 static const ]b4_int_type(b4_pact_ninf, b4_pact_ninf)[ yypact_ninf_;
efeed023 168
620b5727 169 /// For a state, default reduction number.
efeed023
AD
170 /// Unless\a yytable_ specifies something else to do.
171 /// Zero means the default is an error.
617a8f12 172 static const ]b4_int_type_for([b4_defact])[ yydefact_[];
efeed023 173
617a8f12
AD
174 static const ]b4_int_type_for([b4_pgoto])[ yypgoto_[];
175 static const ]b4_int_type_for([b4_defgoto])[ yydefgoto_[];
efeed023
AD
176
177 /// What to do in a state.
178 /// \a yytable_[yypact_[s]]: what to do in state \a s.
179 /// - if positive, shift that token.
180 /// - if negative, reduce the rule which number is the opposite.
181 /// - if zero, do what YYDEFACT says.
617a8f12
AD
182 static const ]b4_int_type_for([b4_table])[ yytable_[];
183 static const ]b4_int_type(b4_table_ninf, b4_table_ninf)[ yytable_ninf_;
efeed023 184
617a8f12 185 static const ]b4_int_type_for([b4_check])[ yycheck_[];
efeed023
AD
186
187 /// For a state, its accessing symbol.
617a8f12 188 static const ]b4_int_type_for([b4_stos])[ yystos_[];
efeed023
AD
189
190 /// For a rule, its LHS.
617a8f12 191 static const ]b4_int_type_for([b4_r1])[ yyr1_[];
efeed023 192 /// For a rule, its RHS length.
258cddbc 193 static const ]b4_int_type_for([b4_r2])[ yyr2_[]; ]b4_error_verbose_if([
9e0876fb 194
9e0876fb 195 /// Convert the symbol name \a n to a form suitable for a diagnostic.
39f6a8d1 196 static std::string yytnamerr_ (const char *n);])[
2b548aa6 197
5f108727 198]b4_token_table_if([], [[#if ]b4_api_PREFIX[DEBUG]])[
258cddbc
AD
199 /// For a symbol, its name in clear.
200 static const char* const yytname_[];
5f108727 201]b4_token_table_if([[#if ]b4_api_PREFIX[DEBUG]])[
e019c247 202 /// A type to store symbol numbers and -1.
f479c6c6 203 typedef ]b4_int_type_for([b4_rhs])[ rhs_number_type;
617a8f12 204 /// A `-1'-separated list of the rules' RHS.
99880de5 205 static const rhs_number_type yyrhs_[];
617a8f12
AD
206 /// For each rule, the index of the first RHS symbol in \a yyrhs_.
207 static const ]b4_int_type_for([b4_prhs])[ yyprhs_[];
208 /// For each rule, its source line number.
209 static const ]b4_int_type_for([b4_rline])[ yyrline_[];
210 /// For each scanner token number, its symbol number.
211 static const ]b4_int_type_for([b4_toknum])[ yytoken_number_[];
efeed023 212 /// Report on the debug stream that the rule \a r is going to be reduced.
d1ff7a7c 213 virtual void yy_reduce_print_ (int r);
efeed023 214 /// Print the state stack on the debug stream.
f69a4142 215 virtual void yystack_print_ ();
fa7b79c0
PE
216
217 /* Debugging. */
218 int yydebug_;
219 std::ostream* yycdebug_;
69e2658b 220#endif
2b548aa6 221
32c96bd7
AD
222 /// Convert a scanner token number \a t to a symbol number.
223 token_number_type yytranslate_ (int t);
f69a4142
AD
224
225 /// \brief Reclaim the memory associated to a symbol.
226 /// \param yymsg Why this token is reclaimed.
25a6ad2f 227 /// If null, do not display the symbol, just free it.
f69a4142
AD
228 /// \param yytype The symbol type.
229 /// \param yyvaluep Its semantic value.
230 /// \param yylocationp Its location.
231 inline void yydestruct_ (const char* yymsg,
02650b7f
PE
232 int yytype,
233 semantic_type* yyvaluep,
234 location_type* yylocationp);
2b548aa6 235
52d5733f 236 /// Pop \a n symbols the three stacks.
f69a4142 237 inline void yypop_ (unsigned int n = 1);
52d5733f 238
762a801e 239 /* Constants. */
617a8f12 240 static const int yyeof_;
39912f52 241 /* LAST_ -- Last index in TABLE_. */
617a8f12
AD
242 static const int yylast_;
243 static const int yynnts_;
244 static const int yyempty_;
245 static const int yyfinal_;
246 static const int yyterror_;
247 static const int yyerrcode_;
248 static const int yyntokens_;
249 static const unsigned int yyuser_token_number_max_;
99880de5 250 static const token_number_type yyundef_token_;
caf37a36 251]b4_parse_param_vars[
2b548aa6 252 };
793fbca5 253]b4_namespace_close[
2b548aa6 254
592d0b1e 255]b4_percent_define_flag_if([[global_tokens_and_yystype]],
fb9712a9
AD
256[b4_token_defines(b4_tokens)
257
4b3847c3 258#ifndef ]b4_api_PREFIX[STYPE
9d9b8b70 259 /* Redirection for backward compatibility. */
4b3847c3 260# define ]b4_api_PREFIX[STYPE b4_namespace_ref::b4_parser_class_name::semantic_type
fb9712a9 261#endif
22172d47
AD
262])[
263]b4_percent_code_get([[provides]])[
264]b4_cpp_guard_close([b4_spec_defines_file])
1c7ec959
AD
265b4_output_end()
266])
267
268
269b4_output_begin([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
b720fedf 515 // State.
98ae9643 516 int yyn;
a85284cf 517 int yylen = 0;
98ae9643 518 int yystate = 0;
d4fb5e3c 519
b720fedf 520 // Error handling.
98ae9643
AD
521 int yynerrs_ = 0;
522 int yyerrstatus_ = 0;
dbcdae2d 523
742e4900 524 /// Semantic value of the lookahead.
41a4806a
AD
525 static semantic_type yyval_default;
526 semantic_type yylval = yyval_default;
742e4900 527 /// Location of the lookahead.
98ae9643
AD
528 location_type yylloc;
529 /// The locations where the error started and ended.
a005dbcb 530 location_type yyerror_range[3];
dbcdae2d 531
98ae9643
AD
532 /// $$.
533 semantic_type yyval;
534 /// @@$.
535 location_type yyloc;
dbcdae2d 536
98ae9643 537 int yyresult;
ad745863 538
7e1fabbe
AD
539 // FIXME: This shoud be completely indented. It is not yet to
540 // avoid gratuitous conflicts when merging into the master branch.
541 try
542 {
98ae9643 543 YYCDEBUG << "Starting parse" << std::endl;
451364ed 544
451364ed 545]m4_ifdef([b4_initial_action], [
cd735a8c
AD
546b4_dollar_pushdef([yylval], [], [yylloc])dnl
547/* User initialization code. */
548b4_user_initial_action
549b4_dollar_popdef])[]dnl
451364ed 550
98ae9643
AD
551 [ /* Initialize the stacks. The initial state will be pushed in
552 yynewstate, since the latter expects the semantical and the
553 location values to have been already stored, initialize these
554 stacks with a primary value. */
555 yystate_stack_ = state_stack_type (0);
556 yysemantic_stack_ = semantic_stack_type (0);
557 yylocation_stack_ = location_stack_type (0);
558 yysemantic_stack_.push (yylval);
559 yylocation_stack_.push (yylloc);
560
561 /* New state. */
562 yynewstate:
563 yystate_stack_.push (yystate);
564 YYCDEBUG << "Entering state " << yystate << std::endl;
868d2d96
JD
565
566 /* Accept? */
567 if (yystate == yyfinal_)
568 goto yyacceptlab;
569
98ae9643
AD
570 goto yybackup;
571
572 /* Backup. */
573 yybackup:
574
742e4900 575 /* Try to take a decision without lookahead. */
98ae9643 576 yyn = yypact_[yystate];
d5eb0826 577 if (yy_pact_value_is_default_ (yyn))
98ae9643
AD
578 goto yydefault;
579
742e4900 580 /* Read a lookahead token. */
98ae9643
AD
581 if (yychar == yyempty_)
582 {
7e1fabbe
AD
583 YYCDEBUG << "Reading a token: ";
584 yychar = ]b4_c_function_call([yylex], [int],
585 [b4_api_PREFIX[STYPE*], [&yylval]][]dnl
327afc7c 586b4_locations_if([, [[location*], [&yylloc]]])dnl
dbcdae2d 587m4_ifdef([b4_lex_param], [, ]b4_lex_param))[;
98ae9643
AD
588 }
589
98ae9643
AD
590 /* Convert token to internal form. */
591 if (yychar <= yyeof_)
592 {
02650b7f
PE
593 yychar = yytoken = yyeof_;
594 YYCDEBUG << "Now at end of input." << std::endl;
98ae9643
AD
595 }
596 else
597 {
02650b7f
PE
598 yytoken = yytranslate_ (yychar);
599 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
98ae9643
AD
600 }
601
602 /* If the proper action on seeing token YYTOKEN is to reduce or to
603 detect an error, take that action. */
604 yyn += yytoken;
34ec3579 605 if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yytoken)
98ae9643
AD
606 goto yydefault;
607
608 /* Reduce or error. */
609 yyn = yytable_[yyn];
610 if (yyn <= 0)
611 {
d5eb0826
JD
612 if (yy_table_value_is_error_ (yyn))
613 goto yyerrlab;
02650b7f
PE
614 yyn = -yyn;
615 goto yyreduce;
98ae9643
AD
616 }
617
742e4900 618 /* Shift the lookahead token. */
98ae9643
AD
619 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
620
868d2d96
JD
621 /* Discard the token being shifted. */
622 yychar = yyempty_;
98ae9643
AD
623
624 yysemantic_stack_.push (yylval);
625 yylocation_stack_.push (yylloc);
626
627 /* Count tokens shifted since error; after three, turn off error
628 status. */
629 if (yyerrstatus_)
630 --yyerrstatus_;
631
632 yystate = yyn;
633 goto yynewstate;
634
635 /*-----------------------------------------------------------.
636 | yydefault -- do the default action for the current state. |
637 `-----------------------------------------------------------*/
638 yydefault:
639 yyn = yydefact_[yystate];
640 if (yyn == 0)
641 goto yyerrlab;
642 goto yyreduce;
643
644 /*-----------------------------.
645 | yyreduce -- Do a reduction. |
646 `-----------------------------*/
647 yyreduce:
648 yylen = yyr2_[yyn];
a85284cf 649 /* If YYLEN is nonzero, implement the default value of the action:
98ae9643
AD
650 `$$ = $1'. Otherwise, use the top of the stack.
651
652 Otherwise, the following line sets YYVAL to garbage.
653 This behavior is undocumented and Bison
654 users should not rely upon it. */
655 if (yylen)
656 yyval = yysemantic_stack_[yylen - 1];
657 else
658 yyval = yysemantic_stack_[0];
2b548aa6 659
7e1fabbe 660 // Compute the default @@$.
2b548aa6 661 {
98ae9643
AD
662 slice<location_type, location_stack_type> slice (yylocation_stack_, yylen);
663 YYLLOC_DEFAULT (yyloc, slice, yylen);
2b548aa6 664 }
7e1fabbe
AD
665
666 // Perform the reduction.
98ae9643
AD
667 YY_REDUCE_PRINT (yyn);
668 switch (yyn)
669 {
7e1fabbe
AD
670 ]b4_user_actions[
671 default:
672 break;
98ae9643 673 }
7e1fabbe 674
3b837882
JD
675 /* User semantic actions sometimes alter yychar, and that requires
676 that yytoken be updated with the new translation. We take the
677 approach of translating immediately before every use of yytoken.
678 One alternative is translating here after every semantic action,
679 but that translation would be missed if the semantic action
680 invokes YYABORT, YYACCEPT, or YYERROR immediately after altering
681 yychar. In the case of YYABORT or YYACCEPT, an incorrect
682 destructor might then be invoked immediately. In the case of
683 YYERROR, subsequent parser actions might lead to an incorrect
684 destructor call or verbose syntax error message before the
685 lookahead is translated. */
d1ff7a7c 686 YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc);
98ae9643
AD
687
688 yypop_ (yylen);
a85284cf 689 yylen = 0;
98ae9643
AD
690 YY_STACK_PRINT ();
691
692 yysemantic_stack_.push (yyval);
693 yylocation_stack_.push (yyloc);
694
695 /* Shift the result of the reduction. */
696 yyn = yyr1_[yyn];
697 yystate = yypgoto_[yyn - yyntokens_] + yystate_stack_[0];
698 if (0 <= yystate && yystate <= yylast_
34ec3579 699 && yycheck_[yystate] == yystate_stack_[0])
98ae9643
AD
700 yystate = yytable_[yystate];
701 else
702 yystate = yydefgoto_[yyn - yyntokens_];
703 goto yynewstate;
704
705 /*------------------------------------.
706 | yyerrlab -- here on detecting error |
707 `------------------------------------*/
708 yyerrlab:
3b837882
JD
709 /* Make sure we have latest lookahead translation. See comments at
710 user semantic actions for why this is necessary. */
711 yytoken = yytranslate_ (yychar);
712
98ae9643
AD
713 /* If not already recovering from an error, report this error. */
714 if (!yyerrstatus_)
715 {
02650b7f 716 ++yynerrs_;
095a1d11
JD
717 if (yychar == yyempty_)
718 yytoken = yyempty_;
1e05521d 719 error (yylloc, yysyntax_error_ (yystate, yytoken));
98ae9643
AD
720 }
721
a005dbcb 722 yyerror_range[1] = yylloc;
98ae9643
AD
723 if (yyerrstatus_ == 3)
724 {
117c7942
AD
725 /* If just tried and failed to reuse lookahead token after an
726 error, discard it. */
727 if (yychar <= yyeof_)
728 {
729 /* Return failure if at end of input. */
730 if (yychar == yyeof_)
731 YYABORT;
732 }
733 else
734 {
735 yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
736 yychar = yyempty_;
737 }
98ae9643
AD
738 }
739
742e4900 740 /* Else will try to reuse lookahead token after shifting the error
98ae9643
AD
741 token. */
742 goto yyerrlab1;
743
744
745 /*---------------------------------------------------.
746 | yyerrorlab -- error raised explicitly by YYERROR. |
747 `---------------------------------------------------*/
748 yyerrorlab:
749
750 /* Pacify compilers like GCC when the user code never invokes
751 YYERROR and the label yyerrorlab therefore never appears in user
752 code. */
753 if (false)
754 goto yyerrorlab;
755
a005dbcb 756 yyerror_range[1] = yylocation_stack_[yylen - 1];
a85284cf 757 /* Do not reclaim the symbols of the rule which action triggered
9d9b8b70 758 this YYERROR. */
98ae9643 759 yypop_ (yylen);
a85284cf 760 yylen = 0;
98ae9643
AD
761 yystate = yystate_stack_[0];
762 goto yyerrlab1;
763
764 /*-------------------------------------------------------------.
765 | yyerrlab1 -- common code for both syntax error and YYERROR. |
766 `-------------------------------------------------------------*/
767 yyerrlab1:
768 yyerrstatus_ = 3; /* Each real token shifted decrements this. */
769
770 for (;;)
771 {
02650b7f 772 yyn = yypact_[yystate];
d5eb0826 773 if (!yy_pact_value_is_default_ (yyn))
02650b7f
PE
774 {
775 yyn += yyterror_;
34ec3579 776 if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
02650b7f
PE
777 {
778 yyn = yytable_[yyn];
779 if (0 < yyn)
780 break;
781 }
782 }
783
784 /* Pop the current state because it cannot handle the error token. */
785 if (yystate_stack_.height () == 1)
117c7942 786 YYABORT;
02650b7f 787
a005dbcb 788 yyerror_range[1] = yylocation_stack_[0];
02650b7f
PE
789 yydestruct_ ("Error: popping",
790 yystos_[yystate],
791 &yysemantic_stack_[0], &yylocation_stack_[0]);
792 yypop_ ();
793 yystate = yystate_stack_[0];
794 YY_STACK_PRINT ();
98ae9643
AD
795 }
796
a005dbcb 797 yyerror_range[2] = yylloc;
98ae9643 798 // Using YYLLOC is tempting, but would change the location of
742e4900 799 // the lookahead. YYLOC is available though.
a005dbcb 800 YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
98ae9643
AD
801 yysemantic_stack_.push (yylval);
802 yylocation_stack_.push (yyloc);
803
9d9b8b70 804 /* Shift the error token. */
98ae9643 805 YY_SYMBOL_PRINT ("Shifting", yystos_[yyn],
482dc52f 806 &yysemantic_stack_[0], &yylocation_stack_[0]);
98ae9643
AD
807
808 yystate = yyn;
809 goto yynewstate;
810
811 /* Accept. */
812 yyacceptlab:
813 yyresult = 0;
814 goto yyreturn;
815
816 /* Abort. */
817 yyabortlab:
818 yyresult = 1;
819 goto yyreturn;
820
821 yyreturn:
868d2d96 822 if (yychar != yyempty_)
3b837882
JD
823 {
824 /* Make sure we have latest lookahead translation. See comments
825 at user semantic actions for why this is necessary. */
826 yytoken = yytranslate_ (yychar);
827 yydestruct_ ("Cleanup: discarding lookahead", yytoken, &yylval,
828 &yylloc);
829 }
98ae9643 830
a85284cf 831 /* Do not reclaim the symbols of the rule which action triggered
9d9b8b70 832 this YYABORT or YYACCEPT. */
a85284cf 833 yypop_ (yylen);
a2642464 834 while (1 < yystate_stack_.height ())
98ae9643 835 {
117c7942
AD
836 yydestruct_ ("Cleanup: popping",
837 yystos_[yystate_stack_[0]],
838 &yysemantic_stack_[0],
839 &yylocation_stack_[0]);
840 yypop_ ();
98ae9643
AD
841 }
842
843 return yyresult;
7e1fabbe
AD
844 }
845 catch (...)
846 {
25a6ad2f
AD
847 YYCDEBUG << "Exception caught: cleaning lookahead and stack"
848 << std::endl;
849 // Do not try to display the values of the reclaimed symbols,
850 // as their printer might throw an exception.
7e1fabbe
AD
851 if (yychar != yyempty_)
852 {
853 /* Make sure we have latest lookahead translation. See
854 comments at user semantic actions for why this is
855 necessary. */
856 yytoken = yytranslate_ (yychar);
25a6ad2f 857 yydestruct_ (YY_NULL, yytoken, &yylval, &yylloc);
7e1fabbe
AD
858 }
859
a2642464 860 while (1 < yystate_stack_.height ())
7e1fabbe 861 {
25a6ad2f 862 yydestruct_ (YY_NULL,
7e1fabbe
AD
863 yystos_[yystate_stack_[0]],
864 &yysemantic_stack_[0],
865 &yylocation_stack_[0]);
866 yypop_ ();
867 }
868 throw;
869 }
98ae9643 870 }
2b548aa6 871
98ae9643
AD
872 // Generate an error message.
873 std::string
39f6a8d1
AD
874 ]b4_parser_class_name[::yysyntax_error_ (]dnl
875b4_error_verbose_if([int yystate, int yytoken],
876 [int, int])[)
678094a2
JD
877 {]b4_error_verbose_if([[
878 std::string yyres;
095a1d11
JD
879 // Number of reported tokens (one for the "unexpected", one per
880 // "expected").
881 size_t yycount = 0;
882 // Its maximum.
883 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
884 // Arguments of yyformat.
885 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
886
887 /* There are many possibilities here to consider:
888 - If this state is a consistent state with a default action, then
889 the only way this function was invoked is if the default action
890 is an error action. In that case, don't check for expected
891 tokens because there are none.
892 - The only way there can be no lookahead present (in yytoken) is
893 if this state is a consistent state with a default action.
894 Thus, detecting the absence of a lookahead is sufficient to
895 determine that there is no unexpected or expected token to
896 report. In that case, just report a simple "syntax error".
897 - Don't assume there isn't a lookahead just because this state is
898 a consistent state with a default action. There might have
899 been a previous inconsistent state, consistent state with a
900 non-default action, or user semantic action that manipulated
901 yychar.
902 - Of course, the expected token list depends on states to have
903 correct lookahead information, and it depends on the parser not
904 to perform extra reductions after fetching a lookahead from the
905 scanner and before detecting a syntax error. Thus, state
906 merging (from LALR or IELR) and default reductions corrupt the
907 expected token list. However, the list is correct for
908 canonical LR with one exception: it will still contain any
909 token that will not be accepted due to an error action in a
910 later state.
911 */
912 if (yytoken != yyempty_)
98ae9643 913 {
095a1d11
JD
914 yyarg[yycount++] = yytname_[yytoken];
915 int yyn = yypact_[yystate];
916 if (!yy_pact_value_is_default_ (yyn))
917 {
f953cb20
JD
918 /* Start YYX at -YYN if negative to avoid negative indexes in
919 YYCHECK. In other words, skip the first -YYN actions for
920 this state because they are default actions. */
921 int yyxbegin = yyn < 0 ? -yyn : 0;
f953cb20
JD
922 /* Stay within bounds of both yycheck and yytname. */
923 int yychecklim = yylast_ - yyn + 1;
924 int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
f953cb20
JD
925 for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
926 if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_
927 && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
928 {
929 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
930 {
931 yycount = 1;
932 break;
933 }
934 else
935 yyarg[yycount++] = yytname_[yyx];
936 }
095a1d11
JD
937 }
938 }
f953cb20 939
ef51bfa7 940 char const* yyformat = YY_NULL;
f953cb20
JD
941 switch (yycount)
942 {
943#define YYCASE_(N, S) \
944 case N: \
945 yyformat = S; \
946 break
095a1d11 947 YYCASE_(0, YY_("syntax error"));
f953cb20
JD
948 YYCASE_(1, YY_("syntax error, unexpected %s"));
949 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
950 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
951 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
952 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
e657f369 953#undef YYCASE_
98ae9643 954 }
095a1d11 955
f953cb20
JD
956 // Argument number.
957 size_t yyi = 0;
958 for (char const* yyp = yyformat; *yyp; ++yyp)
959 if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount)
960 {
961 yyres += yytnamerr_ (yyarg[yyi++]);
962 ++yyp;
963 }
964 else
965 yyres += *yyp;
678094a2
JD
966 return yyres;]], [[
967 return YY_("syntax error");]])[
98ae9643 968 }
a08460b0 969
5348bfbe 970
98ae9643
AD
971 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
972 STATE-NUM. */
973 const ]b4_int_type(b4_pact_ninf, b4_pact_ninf) b4_parser_class_name::yypact_ninf_ = b4_pact_ninf[;
974 const ]b4_int_type_for([b4_pact])[
975 ]b4_parser_class_name[::yypact_[] =
976 {
977 ]b4_pact[
978 };
2b548aa6 979
620b5727
JD
980 /* YYDEFACT[S] -- default reduction number in state S. Performed when
981 YYTABLE doesn't specify something else to do. Zero means the
982 default is an error. */
98ae9643
AD
983 const ]b4_int_type_for([b4_defact])[
984 ]b4_parser_class_name[::yydefact_[] =
985 {
986 ]b4_defact[
987 };
2b548aa6 988
98ae9643
AD
989 /* YYPGOTO[NTERM-NUM]. */
990 const ]b4_int_type_for([b4_pgoto])[
991 ]b4_parser_class_name[::yypgoto_[] =
992 {
993 ]b4_pgoto[
994 };
2b548aa6 995
98ae9643
AD
996 /* YYDEFGOTO[NTERM-NUM]. */
997 const ]b4_int_type_for([b4_defgoto])[
998 ]b4_parser_class_name[::yydefgoto_[] =
999 {
1000 ]b4_defgoto[
1001 };
2b548aa6 1002
98ae9643
AD
1003 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
1004 positive, shift that token. If negative, reduce the rule which
e4bcae3c 1005 number is the opposite. If YYTABLE_NINF_, syntax error. */
98ae9643
AD
1006 const ]b4_int_type(b4_table_ninf, b4_table_ninf) b4_parser_class_name::yytable_ninf_ = b4_table_ninf[;
1007 const ]b4_int_type_for([b4_table])[
1008 ]b4_parser_class_name[::yytable_[] =
1009 {
1010 ]b4_table[
1011 };
1012
1013 /* YYCHECK. */
1014 const ]b4_int_type_for([b4_check])[
1015 ]b4_parser_class_name[::yycheck_[] =
1016 {
1017 ]b4_check[
1018 };
1019
1020 /* STOS_[STATE-NUM] -- The (internal number of the) accessing
1021 symbol of state STATE-NUM. */
1022 const ]b4_int_type_for([b4_stos])[
1023 ]b4_parser_class_name[::yystos_[] =
1024 {
1025 ]b4_stos[
1026 };
769b430f 1027
5f108727 1028#if ]b4_api_PREFIX[DEBUG
98ae9643
AD
1029 /* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding
1030 to YYLEX-NUM. */
1031 const ]b4_int_type_for([b4_toknum])[
1032 ]b4_parser_class_name[::yytoken_number_[] =
1033 {
1034 ]b4_toknum[
1035 };
769b430f
AD
1036#endif
1037
98ae9643
AD
1038 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1039 const ]b4_int_type_for([b4_r1])[
1040 ]b4_parser_class_name[::yyr1_[] =
1041 {
1042 ]b4_r1[
1043 };
2b548aa6 1044
98ae9643
AD
1045 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
1046 const ]b4_int_type_for([b4_r2])[
1047 ]b4_parser_class_name[::yyr2_[] =
1048 {
1049 ]b4_r2[
1050 };
2b548aa6 1051
5f108727 1052]b4_token_table_if([], [[#if ]b4_api_PREFIX[DEBUG]])[
98ae9643 1053 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
9d9b8b70 1054 First, the terminals, then, starting at \a yyntokens_, nonterminals. */
98ae9643
AD
1055 const char*
1056 const ]b4_parser_class_name[::yytname_[] =
1057 {
1058 ]b4_tname[
1059 };
2b548aa6 1060
5f108727 1061]b4_token_table_if([[#if ]b4_api_PREFIX[DEBUG]])[
9d9b8b70 1062 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
98ae9643
AD
1063 const ]b4_parser_class_name[::rhs_number_type
1064 ]b4_parser_class_name[::yyrhs_[] =
1065 {
1066 ]b4_rhs[
1067 };
2b548aa6 1068
98ae9643
AD
1069 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
1070 YYRHS. */
1071 const ]b4_int_type_for([b4_prhs])[
1072 ]b4_parser_class_name[::yyprhs_[] =
1073 {
1074 ]b4_prhs[
1075 };
2b548aa6 1076
98ae9643
AD
1077 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
1078 const ]b4_int_type_for([b4_rline])[
1079 ]b4_parser_class_name[::yyrline_[] =
1080 {
1081 ]b4_rline[
1082 };
5348bfbe 1083
98ae9643
AD
1084 // Print the state stack on the debug stream.
1085 void
1086 ]b4_parser_class_name[::yystack_print_ ()
1087 {
1088 *yycdebug_ << "Stack now";
1089 for (state_stack_type::const_iterator i = yystate_stack_.begin ();
02650b7f 1090 i != yystate_stack_.end (); ++i)
98ae9643
AD
1091 *yycdebug_ << ' ' << *i;
1092 *yycdebug_ << std::endl;
1093 }
25f66e1a 1094
98ae9643
AD
1095 // Report on the debug stream that the rule \a yyrule is going to be reduced.
1096 void
d1ff7a7c 1097 ]b4_parser_class_name[::yy_reduce_print_ (int yyrule)
98ae9643
AD
1098 {
1099 unsigned int yylno = yyrline_[yyrule];
d1ff7a7c 1100 int yynrhs = yyr2_[yyrule];
98ae9643
AD
1101 /* Print the symbols being reduced, and their result. */
1102 *yycdebug_ << "Reducing stack by rule " << yyrule - 1
7cff04b5 1103 << " (line " << yylno << "):" << std::endl;
d1ff7a7c
AD
1104 /* The symbols being reduced. */
1105 for (int yyi = 0; yyi < yynrhs; yyi++)
1106 YY_SYMBOL_PRINT (" $" << yyi + 1 << " =",
02650b7f
PE
1107 yyrhs_[yyprhs_[yyrule] + yyi],
1108 &]b4_rhs_value(yynrhs, yyi + 1)[,
1109 &]b4_rhs_location(yynrhs, yyi + 1)[);
98ae9643 1110 }
5f108727 1111#endif // ]b4_api_PREFIX[DEBUG
69e2658b 1112
98ae9643
AD
1113 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
1114 ]b4_parser_class_name[::token_number_type
32c96bd7 1115 ]b4_parser_class_name[::yytranslate_ (int t)
2b548aa6 1116 {
98ae9643
AD
1117 static
1118 const token_number_type
1119 translate_table[] =
1120 {
1121 ]b4_translate[
1122 };
32c96bd7
AD
1123 if ((unsigned int) t <= yyuser_token_number_max_)
1124 return translate_table[t];
98ae9643
AD
1125 else
1126 return yyundef_token_;
1127 }
1128
1129 const int ]b4_parser_class_name[::yyeof_ = 0;
1130 const int ]b4_parser_class_name[::yylast_ = ]b4_last[;
1131 const int ]b4_parser_class_name[::yynnts_ = ]b4_nterms_number[;
1132 const int ]b4_parser_class_name[::yyempty_ = -2;
1133 const int ]b4_parser_class_name[::yyfinal_ = ]b4_final_state_number[;
1134 const int ]b4_parser_class_name[::yyterror_ = 1;
1135 const int ]b4_parser_class_name[::yyerrcode_ = 256;
1136 const int ]b4_parser_class_name[::yyntokens_ = ]b4_tokens_number[;
1137
1138 const unsigned int ]b4_parser_class_name[::yyuser_token_number_max_ = ]b4_user_token_number_max[;
1139 const ]b4_parser_class_name[::token_number_type ]b4_parser_class_name[::yyundef_token_ = ]b4_undef_token_number[;
2b548aa6 1140
793fbca5 1141]b4_namespace_close[
dcd5344d 1142]b4_epilogue[]dnl
1c7ec959 1143b4_output_end()