X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/9bc0dd679f19b79f7250d2b16563b590a3b032bb..b09f4f48512c274a7574b6a22e4a1eac6a86fd61:/data/glr.cc diff --git a/data/glr.cc b/data/glr.cc index 173a5cd1..f653c416 100644 --- a/data/glr.cc +++ b/data/glr.cc @@ -1,7 +1,8 @@ -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 # it under the terms of the GNU General Public License as published by @@ -52,11 +53,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])) @@ -90,8 +95,7 @@ m4_define([b4_yy_symbol_print_generate], # 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], @@ -102,8 +106,7 @@ b4_c_ansi_function_decl([yyerror], # Define yyerror. m4_append([b4_epilogue], -[/* Line __line__ of glr.cc. */ -b4_syncline([@oline@], [@ofile@])[ +[b4_syncline([@oline@], [@ofile@])[ /*------------------. | Report an error. | `------------------*/ @@ -124,8 +127,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[ { } @@ -187,16 +194,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[ @@ -214,7 +221,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])[ @@ -223,6 +231,8 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C++], #ifndef PARSER_HEADER_H # define PARSER_HEADER_H +]b4_percent_code_get([[requires]])[ + #include #include @@ -235,13 +245,6 @@ namespace ]b4_namespace[ class location; } -]m4_ifdef([b4_before_definitions], -[[/* Copy the %before-definitions blocks. */ -]b4_before_definitions])[]dnl - -[/* Line __line__ of glr.cc. */ -]b4_syncline([@oline@], [@ofile@])[ - #include "location.hh" /* Enabling traces. */ @@ -249,19 +252,6 @@ namespace ]b4_namespace[ # define YYDEBUG ]b4_debug_flag[ #endif -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE ]b4_error_verbose_flag[ -#endif - -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE ]b4_token_table[ -#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). */ @@ -291,16 +281,17 @@ namespace ]b4_namespace[ #ifndef YYSTYPE ]m4_ifdef([b4_stype], [ union semantic_type -b4_stype -/* Line __line__ of lalr1.cc. */ -b4_syncline([@oline@], [@ofile@]) - ;], -[ typedef int semantic_type;])[ + { +b4_user_stype + };], +[m4_if(b4_tag_seen_flag, 0, +[[ typedef int semantic_type;]], +[[ typedef YYSTYPE semantic_type;]])])[ #else 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 { @@ -355,7 +346,10 @@ b4_syncline([@oline@], [@ofile@]) 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. @@ -368,13 +362,11 @@ b4_syncline([@oline@], [@ofile@]) 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 @@ -386,8 +378,7 @@ m4_ifset([b4_global_tokens_and_yystype], } -]m4_ifdef([b4_after_definitions], -[[/* Copy the %after-definitions blocks. */ -]b4_after_definitions])[]dnl +]b4_percent_code_get([[provides]])[]dnl [#endif /* ! defined PARSER_HEADER_H */] +m4_divert_pop(0)