# Save the parse parameters.
m4_define([b4_parse_param_orig], m4_defn([b4_parse_param]))
+# b4_parse_param_wrap
+# -------------------
+# New ones.
+m4_ifset([b4_parse_param],
+[m4_define([b4_parse_param_wrap],
+ [[b4_namespace_ref::b4_parser_class_name[& yyparser], [[yyparser]]],]
+m4_defn([b4_parse_param]))],
+[m4_define([b4_parse_param_wrap],
+ [[b4_namespace_ref::b4_parser_class_name[& yyparser], [[yyparser]]]])
+])
+
# b4_yy_symbol_print_define
# -------------------------
# Declaration that might either go into the header (if --defines)
# or open coded in the parser body.
m4_define([b4_shared_declarations],
-[dnl In this section, the parse params are the original parse_params.
-m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
+[m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
b4_percent_code_get([[requires]])[
#include <stdexcept>
const semantic_type* yyvaluep]b4_locations_if([[,
const location_type* yylocationp]])[);
private:
- /* Debugging. */
+ // Debugging.
std::ostream* yycdebug_;
#endif
])
b4_defines_if(
-[m4_changecom()dnl
-m4_divert_push(0)dnl
-@output(b4_spec_defines_file@)@
+[b4_output_begin([b4_spec_defines_file])
b4_copyright([Skeleton interface for Bison GLR parsers in C++],
[2002-2012])[
-/* C++ GLR parser skeleton written by Akim Demaille. */
+// C++ GLR parser skeleton written by Akim Demaille.
]b4_cpp_guard_open([b4_spec_defines_file])[
]b4_shared_declarations[
# Let glr.c (and b4_shared_declarations) believe that the user
# arguments include the parser itself.
-m4_ifset([b4_parse_param],
-[m4_pushdef([b4_parse_param],
- [[b4_namespace_ref::b4_parser_class_name[& yyparser], [[yyparser]]],]
-m4_defn([b4_parse_param]))],
-[m4_pushdef([b4_parse_param],
- [[b4_namespace_ref::b4_parser_class_name[& yyparser], [[yyparser]]]])
-])
+m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_wrap]))
m4_include(b4_pkgdatadir/[glr.c])
m4_popdef([b4_parse_param])