mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
c++: do not export YYTOKEN_TABLE and YYERROR_VERBOSE.
* src/output.c (prepare_symbols): Do not define b4_token_table. (prepare): Define b4_token_table_flag. * data/bison.m4 (b4_token_table_if): New. Arm it when error-verbose. * data/glr.c, data/yacc.c (YYTOKEN_TABLE): Remove. Use m4. * data/lalr1.cc: Likewise. (YYERROR_VERBOSE): Remove. * NEWS, doc/bison.texi: Document this.
This commit is contained in:
@@ -233,9 +233,9 @@ m4_define([b4_define_flag_if],
|
||||
|
||||
# _b4_define_flag_if($1, $2, FLAG)
|
||||
# --------------------------------
|
||||
# This macro works around the impossibility to define macros
|
||||
# inside macros, because issuing `[$1]' is not possible in M4 :(.
|
||||
# This sucks hard, GNU M4 should really provide M5 like $$1.
|
||||
# Work around the impossibility to define macros inside macros,
|
||||
# because issuing `[$1]' is not possible in M4. GNU M4 should provide
|
||||
# $$1 a la M5/TeX.
|
||||
m4_define([_b4_define_flag_if],
|
||||
[m4_if([$1$2], $[1]$[2], [],
|
||||
[m4_fatal([$0: Invalid arguments: $@])])dnl
|
||||
@@ -246,12 +246,16 @@ m4_define([b4_$3_if],
|
||||
# b4_FLAG_if(IF-TRUE, IF-FALSE)
|
||||
# -----------------------------
|
||||
# Expand IF-TRUE, if FLAG is true, IF-FALSE otherwise.
|
||||
b4_define_flag_if([defines]) # Whether headers are requested.
|
||||
b4_define_flag_if([error_verbose]) # Whether error are verbose.
|
||||
b4_define_flag_if([glr]) # Whether a GLR parser is requested.
|
||||
b4_define_flag_if([locations]) # Whether locations are tracked.
|
||||
b4_define_flag_if([nondeterministic]) # Whether conflicts should be handled.
|
||||
b4_define_flag_if([yacc]) # Whether POSIX Yacc is emulated.
|
||||
b4_define_flag_if([defines]) # Whether headers are requested.
|
||||
b4_define_flag_if([error_verbose]) # Whether error are verbose.
|
||||
b4_define_flag_if([glr]) # Whether a GLR parser is requested.
|
||||
b4_define_flag_if([locations]) # Whether locations are tracked.
|
||||
b4_define_flag_if([nondeterministic]) # Whether conflicts should be handled.
|
||||
b4_define_flag_if([token_table]) # Whether yytoken_table is demanded.
|
||||
b4_define_flag_if([yacc]) # Whether POSIX Yacc is emulated.
|
||||
|
||||
# yytoken_table is needed to support verbose errors.
|
||||
b4_error_verbose_if([m4_define([b4_token_table_flag], [1])])
|
||||
|
||||
|
||||
## ------------------------- ##
|
||||
|
||||
@@ -215,11 +215,6 @@ b4_percent_code_get([[top]])[
|
||||
# define YYERROR_VERBOSE ]b4_error_verbose_flag[
|
||||
#endif
|
||||
|
||||
/* Enabling the token table. */
|
||||
#ifndef YYTOKEN_TABLE
|
||||
# define YYTOKEN_TABLE ]b4_token_table[
|
||||
#endif
|
||||
|
||||
/* Default (constant) value used for initialization for null
|
||||
right-hand sides. Unlike the standard yacc.c template,
|
||||
here we set the default value of $$ to a zeroed-out value.
|
||||
@@ -367,7 +362,7 @@ static const ]b4_int_type_for([b4_rline])[ yyrline[] =
|
||||
};
|
||||
#endif
|
||||
|
||||
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
|
||||
#if YYDEBUG || YYERROR_VERBOSE || ]b4_token_table_flag[
|
||||
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
|
||||
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
|
||||
static const char *const yytname[] =
|
||||
|
||||
@@ -62,19 +62,6 @@ b4_copyright([Skeleton interface for Bison LALR(1) parsers in C++],
|
||||
# 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
|
||||
|
||||
]b4_namespace_open[
|
||||
|
||||
/// A Bison parser.
|
||||
@@ -211,17 +198,15 @@ b4_user_stype
|
||||
/// For a rule, its LHS.
|
||||
static const ]b4_int_type_for([b4_r1])[ yyr1_[];
|
||||
/// For a rule, its RHS length.
|
||||
static const ]b4_int_type_for([b4_r2])[ yyr2_[];
|
||||
|
||||
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
|
||||
/// For a symbol, its name in clear.
|
||||
static const char* const yytname_[];
|
||||
#endif]b4_error_verbose_if([
|
||||
static const ]b4_int_type_for([b4_r2])[ yyr2_[]; ]b4_error_verbose_if([
|
||||
|
||||
/// Convert the symbol name \a n to a form suitable for a diagnostic.
|
||||
static std::string yytnamerr_ (const char *n);])[
|
||||
|
||||
#if YYDEBUG
|
||||
]b4_token_table_if([], [[#if YYDEBUG]])[
|
||||
/// For a symbol, its name in clear.
|
||||
static const char* const yytname_[];
|
||||
]b4_token_table_if([[#if YYDEBUG]])[
|
||||
/// A type to store symbol numbers and -1.
|
||||
typedef ]b4_int_type_for([b4_rhs])[ rhs_number_type;
|
||||
/// A `-1'-separated list of the rules' RHS.
|
||||
@@ -1051,7 +1036,7 @@ b4_error_verbose_if([int yystate, int yytoken],
|
||||
]b4_r2[
|
||||
};
|
||||
|
||||
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
|
||||
]b4_token_table_if([], [[#if YYDEBUG]])[
|
||||
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
|
||||
First, the terminals, then, starting at \a yyntokens_, nonterminals. */
|
||||
const char*
|
||||
@@ -1059,9 +1044,8 @@ b4_error_verbose_if([int yystate, int yytoken],
|
||||
{
|
||||
]b4_tname[
|
||||
};
|
||||
#endif
|
||||
|
||||
#if YYDEBUG
|
||||
]b4_token_table_if([[#if YYDEBUG]])[
|
||||
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
||||
const ]b4_parser_class_name[::rhs_number_type
|
||||
]b4_parser_class_name[::yyrhs_[] =
|
||||
|
||||
@@ -336,11 +336,6 @@ m4_if(b4_prefix, [yy], [],
|
||||
# define YYERROR_VERBOSE ]b4_error_verbose_flag[
|
||||
#endif
|
||||
|
||||
/* Enabling the token table. */
|
||||
#ifndef YYTOKEN_TABLE
|
||||
# define YYTOKEN_TABLE ]b4_token_table[
|
||||
#endif
|
||||
|
||||
/* In a future release of Bison, this section will be replaced
|
||||
by #include "@basename(]b4_spec_defines_file[@)". */
|
||||
]b4_shared_declarations[
|
||||
@@ -607,7 +602,7 @@ static const ]b4_int_type_for([b4_rline])[ yyrline[] =
|
||||
};
|
||||
#endif
|
||||
|
||||
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
|
||||
#if YYDEBUG || YYERROR_VERBOSE || ]b4_token_table_flag[
|
||||
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
|
||||
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
|
||||
static const char *const yytname[] =
|
||||
|
||||
Reference in New Issue
Block a user