# user must initialize the first positions (in particular the
# filename member).
-
# We require a pure interface using locations.
-m4_define([b4_location_flag], [1])
-m4_define([b4_pure], [1])
+m4_define([b4_locations_flag], [1])
+m4_define([b4_pure_flag], [1])
+
+# The header is mandatory.
+b4_defines_if([],
+ [m4_fatal(b4_skeleton[: using %defines is mandatory])])
m4_include(b4_pkgdatadir/[c++.m4])
m4_include(b4_pkgdatadir/[location.cc])
[static void],
[[FILE *], []],
[[int yytype], [yytype]],
- [[const yy::b4_parser_class_name::semantic_type *yyvaluep],
+ [[const b4_namespace::b4_parser_class_name::semantic_type *yyvaluep],
[yyvaluep]],
- [[const yy::b4_parser_class_name::location_type *yylocationp],
+ [[const b4_namespace::b4_parser_class_name::location_type *yylocationp],
[yylocationp]],
b4_parse_param)[
{
]b4_parse_param_use[]dnl
-[ yyparser.yy_symbol_print_ (yytype, yyvaluep]b4_location_if([, yylocationp])[);
+[ yyparser.yy_symbol_print_ (yytype, yyvaluep]b4_locations_if([, yylocationp])[);
}
]])
# Declare yyerror.
m4_append([b4_post_prologue],
-[/* Line __line__ of glr.cc. */
-b4_syncline([@oline@], [@ofile@])
+[b4_syncline([@oline@], [@ofile@])
b4_c_ansi_function_decl([yyerror],
[static void],
- [[yy::b4_parser_class_name::location_type *yylocationp], [yylocationp]],
+ [[b4_namespace::b4_parser_class_name::location_type *yylocationp], [yylocationp]],
b4_parse_param,
[[const char* msg], [msg]])])
# Define yyerror.
m4_append([b4_epilogue],
-[/* Line __line__ of glr.cc. */
-b4_syncline([@oline@], [@ofile@])[
+[b4_syncline([@oline@], [@ofile@])[
/*------------------.
| Report an error. |
`------------------*/
]b4_c_ansi_function_def([yyerror],
[static void],
- [[yy::b4_parser_class_name::location_type *yylocationp], [yylocationp]],
+ [[b4_namespace::b4_parser_class_name::location_type *yylocationp], [yylocationp]],
b4_parse_param,
[[const char* msg], [msg]])[
{
}
-namespace yy
+namespace ]b4_namespace[
{
]dnl In this section, the parse param are the original parse_params.
m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
#endif /* ! YYDEBUG */
]m4_popdef([b4_parse_param])dnl
-[} // namespace yy
+[} // namespace ]b4_namespace[
]])
# Let glr.c believe that the user arguments include the parser itself.
m4_ifset([b4_parse_param],
[m4_pushdef([b4_parse_param],
- m4_dquote([[[yy::b4_parser_class_name& yyparser], [[yyparser]]],]
+ m4_dquote([[[b4_namespace::b4_parser_class_name& yyparser], [[yyparser]]],]
m4_defn([b4_parse_param])))],
[m4_pushdef([b4_parse_param],
- [[[[yy::b4_parser_class_name& yyparser], [[yyparser]]]]])
+ [[[[b4_namespace::b4_parser_class_name& yyparser], [[yyparser]]]]])
])
m4_include(b4_pkgdatadir/[glr.c])
m4_popdef([b4_parse_param])
-
@output @output_header_name@
-b4_copyright([C++ Skeleton parser for GLALR(1) parsing with Bison],
- [2002, 2003, 2004, 2005, 2006])[
+b4_copyright([Skeleton interface for Bison GLR parsers in C++],
+ [2002, 2003, 2004, 2005, 2006])[
/* C++ GLR parser skeleton written by Akim Demaille. */
/* Using locations. */
#define YYLSP_NEEDED ]b4_locations_flag[
-namespace yy
+namespace ]b4_namespace[
{
class position;
class location;
}
-/* Copy the first part of user declarations. */
-]b4_pre_prologue[
-
-]/* Line __line__ of glr.cc. */
-b4_syncline([@oline@], [@ofile@])[
+]m4_ifdef([b4_start_header],
+[[/* Copy the %start-header blocks. */
+]b4_user_start_header])[
#include "location.hh"
/* Enabling traces. */
#ifndef YYDEBUG
-# define YYDEBUG ]b4_debug[
+# define YYDEBUG ]b4_debug_flag[
#endif
/* Enabling verbose error messages. */
# undef YYERROR_VERBOSE
# define YYERROR_VERBOSE 1
#else
-# define YYERROR_VERBOSE ]b4_error_verbose[
+# define YYERROR_VERBOSE ]b4_error_verbose_flag[
#endif
/* Enabling the token table. */
# define YYTOKEN_TABLE ]b4_token_table[
#endif
-#if 0
-/* Copy the second part of user declarations. */
-]b4_post_prologue[
-
-]/* Line __line__ of glr.cc. */
-
-b4_syncline([@oline@], [@ofile@])[
-#endif
-
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
If N is 0, then set CURRENT to the empty location which ends
the previous symbol: RHS[0] (always defined). */
while (/*CONSTCOND*/ 0)
#endif
-namespace yy
+namespace ]b4_namespace[
{
/// A Bison parser.
class ]b4_parser_class_name[
#ifndef YYSTYPE
]m4_ifdef([b4_stype],
[ union semantic_type
-b4_stype
-/* Line __line__ of lalr1.cc. */
-b4_syncline([@oline@], [@ofile@])
+b4_user_stype
;],
-[ typedef int semantic_type;])[
+[m4_if(b4_tag_seen_flag, 0,
+[[ typedef int semantic_type;]],
+[[ typedef YYSTYPE semantic_type;]])])[
#else
typedef YYSTYPE semantic_type;
#endif
[b4_token_defines(b4_tokens)])
[
#ifndef YYSTYPE
-# define YYSTYPE yy::]b4_parser_class_name[::semantic_type
+# define YYSTYPE ]b4_namespace[::]b4_parser_class_name[::semantic_type
#endif
#ifndef YYLTYPE
-# define YYLTYPE yy::]b4_parser_class_name[::location_type
+# define YYLTYPE ]b4_namespace[::]b4_parser_class_name[::location_type
#endif
}
-#endif /* ! defined PARSER_HEADER_H */]
+]m4_ifdef([b4_end_header],
+[[/* Copy the %end-header blocks. */
+]b4_end_header])[]dnl
+
+[#endif /* ! defined PARSER_HEADER_H */]