X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/4ec13d6058441738f2b8d48e418e539808efa4e6..ad5feac4e2cd16569d8586f2eac6a9efeeadc038:/data/glr.cc?ds=sidebyside diff --git a/data/glr.cc b/data/glr.cc index 21b03f27..12f629a4 100644 --- a/data/glr.cc +++ b/data/glr.cc @@ -1,22 +1,21 @@ -m4_divert(-1) -*- C -*- + -*- C -*- # C++ GLR skeleton for Bison -# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, +# Inc. -# This program is free software; you can redistribute it and/or modify +# This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. - +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. - +# # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# along with this program. If not, see . # This skeleton produces a C++ class that encapsulates a C glr parser. @@ -52,11 +51,15 @@ m4_define([b4_pure_flag], [1]) # The header is mandatory. b4_defines_if([], - [m4_fatal(b4_skeleton[: using %defines is mandatory])]) + [b4_fatal([b4_skeleton[: using %%defines is mandatory]])]) m4_include(b4_pkgdatadir/[c++.m4]) m4_include(b4_pkgdatadir/[location.cc]) +m4_define([b4_parser_class_name], + [b4_percent_define_get([[parser_class_name]])]) +m4_define([b4_namespace], + [b4_percent_define_get([[namespace]])]) # Save the parse parameters. m4_define([b4_parse_param_orig], m4_defn([b4_parse_param])) @@ -122,8 +125,12 @@ 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 [ /// Build a parser object. - ]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[) - : 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[ { } @@ -185,16 +192,16 @@ m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl ]b4_parser_class_name[::debug_level_type ]b4_parser_class_name[::debug_level () const { - return ::yydebug; + return yydebug_; } void ]b4_parser_class_name[::set_debug_level (debug_level_type l) { - ::yydebug = l; + yydebug_ = l; } -#endif /* ! YYDEBUG */ +#endif ]m4_popdef([b4_parse_param])dnl [} // namespace ]b4_namespace[ @@ -212,7 +219,8 @@ m4_defn([b4_parse_param])))], m4_include(b4_pkgdatadir/[glr.c]) m4_popdef([b4_parse_param]) -@output @output_header_name@ +m4_divert_push(0) +@output(b4_spec_defines_file@) b4_copyright([Skeleton interface for Bison GLR parsers in C++], [2002, 2003, 2004, 2005, 2006])[ @@ -221,9 +229,7 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C++], #ifndef PARSER_HEADER_H # define PARSER_HEADER_H -]m4_ifdef([b4_start_header], -[[/* Copy the %start-header blocks. */ -]b4_user_start_header])[ +]b4_percent_code_get([[requires]])[ #include #include @@ -273,8 +279,9 @@ namespace ]b4_namespace[ #ifndef YYSTYPE ]m4_ifdef([b4_stype], [ union semantic_type + { b4_user_stype - ;], + };], [m4_if(b4_tag_seen_flag, 0, [[ typedef int semantic_type;]], [[ typedef YYSTYPE semantic_type;]])])[ @@ -282,7 +289,7 @@ b4_user_stype typedef YYSTYPE semantic_type; #endif /// Symbol locations. - typedef ]b4_location_type[ location_type; + typedef ]b4_percent_define_get([[location_type]])[ location_type; /// Tokens. struct token { @@ -337,7 +344,10 @@ b4_user_stype const semantic_type* yyvaluep, const location_type* yylocationp); private: -#endif /* ! YYDEBUG */ + /* Debugging. */ + int yydebug_; + std::ostream* yycdebug_; +#endif /// \brief Reclaim the memory associated to a symbol. @@ -350,13 +360,11 @@ b4_user_stype semantic_type* yyvaluep, location_type* yylocationp); - /* Debugging. */ - std::ostream* yycdebug_; ]b4_parse_param_vars[ }; ]dnl Redirections for glr.c. -m4_ifset([b4_global_tokens_and_yystype], +b4_percent_define_flag_if([[global_tokens_and_yystype]], [b4_token_defines(b4_tokens)]) [ #ifndef YYSTYPE @@ -368,8 +376,7 @@ m4_ifset([b4_global_tokens_and_yystype], } -]m4_ifdef([b4_end_header], -[[/* Copy the %end-header blocks. */ -]b4_end_header])[]dnl +]b4_percent_code_get([[provides]])[]dnl [#endif /* ! defined PARSER_HEADER_H */] +m4_divert_pop(0)