m4_changecom()
m4_divert(0)dnl
b4_defines_if(
-[@output @output_header_name@
+[@output b4_spec_defines_file
b4_copyright([Skeleton interface for Bison LALR(1) parsers in C++],
[2002, 2003, 2004, 2005, 2006])
dnl FIXME: This is wrong, we want computed header guards.
#ifndef PARSER_HEADER_H
# define PARSER_HEADER_H
-]m4_ifdef([b4_start_header],
-[[/* Copy the %start-header blocks. */
-]b4_user_start_header])[
+]m4_ifdef([b4_requires],
+[[/* Copy the %requires blocks. */
+]b4_user_requires])[
#include <string>
#include <iostream>
virtual void yy_symbol_print_ (int yytype,
const semantic_type* yyvaluep,
const location_type* yylocationp);
-#endif /* ! YYDEBUG */
+#endif
/// State numbers.
virtual void yy_reduce_print_ (int r);
/// Print the state stack on the debug stream.
virtual void yystack_print_ ();
+
+ /* Debugging. */
+ int yydebug_;
+ std::ostream* yycdebug_;
#endif
/// Convert a scanner token number \a t to a symbol number.
static const int yyntokens_;
static const unsigned int yyuser_token_number_max_;
static const token_number_type yyundef_token_;
-
- /* Debugging. */
- int yydebug_;
- std::ostream* yycdebug_;
-
]b4_parse_param_vars[
};
}
# define YYSTYPE b4_namespace::b4_parser_class_name::semantic_type
#endif
])
-m4_ifdef([b4_end_header],
-[[/* Copy the %end-header blocks. */
-]b4_end_header])[]dnl
+m4_ifdef([b4_provides],
+[[/* Copy the %provides blocks. */
+]b4_user_provides])[]dnl
[#endif /* ! defined PARSER_HEADER_H */]
])dnl
-@output @output_parser_name@
+@output b4_parser_file_name
b4_copyright([Skeleton implementation for Bison LALR(1) parsers in C++],
[2002, 2003, 2004, 2005, 2006])
m4_if(b4_prefix, [yy], [],
#define yylex b4_prefix[]lex])[
/* First part of user declarations. */
-]b4_pre_prologue
+]b4_user_pre_prologue
-b4_defines_if([
-#include @output_header_name@])[
+b4_defines_if([[
+#include "@basename(]b4_spec_defines_file[@)"]])[
/* User implementation prologue. */
]b4_user_post_prologue[
/* Suppress unused-variable warnings by "using" E. */
#define YYUSE(e) ((void) (e))
-/* A pseudo ostream that takes yydebug_ into account. */
-# define YYCDEBUG if (yydebug_) (*yycdebug_)
-
/* Enable debugging if requested. */
#if YYDEBUG
+/* A pseudo ostream that takes yydebug_ into account. */
+# define YYCDEBUG if (yydebug_) (*yycdebug_)
+
# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
do { \
if (yydebug_) \
#else /* !YYDEBUG */
+# define YYCDEBUG if (false) std::cerr
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
# define YY_REDUCE_PRINT(Rule)
# define YY_STACK_PRINT()
#endif
/// Build a parser object.
- ]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[)
- : yydebug_ (false),
- yycdebug_ (&std::cerr)]b4_parse_param_cons[
+ ]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[)]m4_ifset([b4_parse_param], [
+ :])[
+#if YYDEBUG
+ ]m4_ifset([b4_parse_param], [ ], [ :])[yydebug_ (false),
+ yycdebug_ (&std::cerr)]m4_ifset([b4_parse_param], [,])[
+#endif]b4_parse_param_cons[
{
}
yy_symbol_value_print_ (yytype, yyvaluep, yylocationp);
*yycdebug_ << ')';
}
-#endif /* ! YYDEBUG */
+#endif
void
]b4_parser_class_name[::yydestruct_ (const char* yymsg,
yylocation_stack_.pop (n);
}
+#if YYDEBUG
std::ostream&
]b4_parser_class_name[::debug_stream () const
{
{
yydebug_ = l;
}
-
+#endif
int
]b4_parser_class_name[::parse ()