2007-01-30 Paolo Bonzini <bonzini@gnu.org>

* data/bison.m4 (b4_percent_define_flag_if): Don't treat 0 as false.
	Complain if the value does not match empty, "true" or "false".
	* data/c++.m4: Adjust default definitions of %define variables.
	* data/java.m4: Adjust default definitions of %define variables.
	* doc/bison.texinfo (Decl Summary): Adjust the %define entry according
	to above behavior.
	* tests/input.at (Boolean %define variables): Test new behavior.
This commit is contained in:
Paolo Bonzini
2007-01-30 08:01:29 +00:00
parent 8405b70c05
commit c1d19e10c3
6 changed files with 49 additions and 16 deletions

View File

@@ -369,9 +369,11 @@ m4_define([b4_percent_define_ifdef],
m4_define([b4_percent_define_flag_if],
[b4_percent_define_ifdef([$1],
[m4_case(b4_percent_define_get([$1]),
[0], [$3], [false], [$3],
[$2])],
[m4_fatal([invalid %define variable passed to b4_percent_define_flag_if: ]$1)])])
[], [$2], [true], [$2], [false], [$3],
[m4_expand_once(
[b4_complain([[invalid value for %%define variable `%s']], [$1])],
[[b4_percent_define_flag_if($1)]])])],
[b4_fatal([[invalid %%define variable `%s' passed to b4_percent_define_flag_if]], [$1])])])
# b4_percent_define_default(VARIABLE, DEFAULT)
# --------------------------------------------

View File

@@ -31,10 +31,10 @@ b4_percent_define_default([[parser_class_name]], [[parser]])
b4_percent_define_default([[location_type]], [[location]])
b4_percent_define_default([[filename_type]], [[std::string]])
b4_percent_define_default([[namespace]], m4_defn([b4_prefix]))
b4_percent_define_default([[global_tokens_and_yystype]], [[0]])
b4_percent_define_default([[global_tokens_and_yystype]], [[false]])
b4_percent_define_default([[define_location_comparison]],
[m4_if(b4_percent_define_get([[filename_type]]),
[std::string], [[1]], [[0]])])
[std::string], [[true]], [[false]])])
# b4_token_enums(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER)

View File

@@ -34,13 +34,13 @@ m4_define([b4_flag_value], [b4_flag_if([$1], [true], [false])])
# b4_public_if(TRUE, FALSE)
# -------------------------
b4_percent_define_default([public], 0)
b4_percent_define_default([[public]], [[false]])
m4_define([b4_public_if],
[b4_percent_define_flag_if([public], [$1], [$2])])
# b4_single_class_if(TRUE, FALSE)
# -------------------------------
b4_percent_define_default([single_class], 0)
b4_percent_define_default([[single_class]], [[false]])
m4_define([b4_single_class_if],
[b4_percent_define_flag_if([single_class], [$1], [$2])])