X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/e2a21b6f0c975927445a04a86488956af3351681..e256e17f572408a91d2014d6b8be1b11e5910b40:/data/glr.cc diff --git a/data/glr.cc b/data/glr.cc index a3d8121d..de1f543e 100644 --- a/data/glr.cc +++ b/data/glr.cc @@ -46,10 +46,13 @@ m4_divert(-1) -*- C -*- # 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]) @@ -73,14 +76,14 @@ m4_define([b4_yy_symbol_print_generate], [static void], [[FILE *], []], [[int yytype], [yytype]], - [[const yy::b4_parser_class_name::semantic_type *yyvaluep], - [yyvaluep]], - [[const yy::b4_parser_class_name::location_type *yylocationp], - [yylocationp]], + [[const b4_namespace::b4_parser_class_name::semantic_type *yyvaluep], + [yyvaluep]], + [[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])[); } ]]) @@ -92,7 +95,7 @@ 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]])]) @@ -107,7 +110,7 @@ b4_syncline([@oline@], [@ofile@])[ ]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]])[ { @@ -116,7 +119,7 @@ b4_syncline([@oline@], [@ofile@])[ } -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 @@ -143,7 +146,7 @@ m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl inline void ]b4_parser_class_name[::yy_symbol_value_print_ (int yytype, - const semantic_type* yyvaluep, const location_type* yylocationp) + const semantic_type* yyvaluep, const location_type* yylocationp) { /* Pacify ``unused variable'' warnings. */ YYUSE (yyvaluep); @@ -152,18 +155,18 @@ m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl { ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl [ default: - break; + break; } } void ]b4_parser_class_name[::yy_symbol_print_ (int yytype, - const semantic_type* yyvaluep, const location_type* yylocationp) + const semantic_type* yyvaluep, const location_type* yylocationp) { *yycdebug_ << (yytype < YYNTOKENS ? "token" : "nterm") - << ' ' << yytname[yytype] << " (" - << *yylocationp << ": "; + << ' ' << yytname[yytype] << " (" + << *yylocationp << ": "; yy_symbol_value_print_ (yytype, yyvaluep, yylocationp); *yycdebug_ << ')'; } @@ -195,7 +198,7 @@ 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[ ]]) @@ -203,18 +206,17 @@ m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl # 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. */ @@ -227,23 +229,24 @@ b4_copyright([C++ Skeleton parser for GLALR(1) parsing with Bison], /* 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[ +]m4_ifdef([b4_start_header], +[[/* Copy the %start-header blocks. */ +]b4_start_header])[]dnl -]/* Line __line__ of glr.cc. */ -b4_syncline([@oline@], [@ofile@])[ +[/* Line __line__ of glr.cc. */ +]b4_syncline([@oline@], [@ofile@])[ #include "location.hh" /* Enabling traces. */ #ifndef YYDEBUG -# define YYDEBUG ]b4_debug[ +# define YYDEBUG ]b4_debug_flag[ #endif /* Enabling verbose error messages. */ @@ -251,7 +254,7 @@ b4_syncline([@oline@], [@ofile@])[ # 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. */ @@ -259,15 +262,6 @@ b4_syncline([@oline@], [@ofile@])[ # 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). */ @@ -287,19 +281,20 @@ b4_syncline([@oline@], [@ofile@])[ while (/*CONSTCOND*/ 0) #endif -namespace yy +namespace ]b4_namespace[ { /// A Bison parser. class ]b4_parser_class_name[ { public: /// Symbol semantic values. -#if ! defined (YYSTYPE) +#ifndef YYSTYPE ]m4_ifdef([b4_stype], -[b4_syncline([b4_stype_line], [b4_file_name]) - union semantic_type b4_stype; +[ union semantic_type +b4_stype /* Line __line__ of lalr1.cc. */ -b4_syncline([@oline@], [@ofile@])], +b4_syncline([@oline@], [@ofile@]) + ;], [ typedef int semantic_type;])[ #else typedef YYSTYPE semantic_type; @@ -311,6 +306,8 @@ b4_syncline([@oline@], [@ofile@])], { ]b4_token_enums(b4_tokens)[ }; + /// Token type. + typedef token::yytokentype token_type; /// Build a parser object. ]b4_parser_class_name[ (]b4_parse_param_decl[); @@ -348,15 +345,15 @@ b4_syncline([@oline@], [@ofile@])], /// \param yyvaluep Its semantic value. /// \param yylocationp Its location. virtual void yy_symbol_value_print_ (int yytype, - const semantic_type* yyvaluep, - const location_type* yylocationp); + const semantic_type* yyvaluep, + const location_type* yylocationp); /// \brief Report a symbol on the debug stream. /// \param yytype The token type. /// \param yyvaluep Its semantic value. /// \param yylocationp Its location. virtual void yy_symbol_print_ (int yytype, - const semantic_type* yyvaluep, - const location_type* yylocationp); + const semantic_type* yyvaluep, + const location_type* yylocationp); private: #endif /* ! YYDEBUG */ @@ -367,9 +364,9 @@ b4_syncline([@oline@], [@ofile@])], /// \param yyvaluep Its semantic value. /// \param yylocationp Its location. inline void yydestruct_ (const char* yymsg, - int yytype, - semantic_type* yyvaluep, - location_type* yylocationp); + int yytype, + semantic_type* yyvaluep, + location_type* yylocationp); /* Debugging. */ std::ostream* yycdebug_; @@ -381,12 +378,16 @@ m4_ifset([b4_global_tokens_and_yystype], [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 */]