]> git.saurik.com Git - bison.git/commitdiff
2007-01-30 Paolo Bonzini <bonzini@gnu.org>
authorPaolo Bonzini <bonzini@gnu.org>
Tue, 30 Jan 2007 08:01:29 +0000 (08:01 +0000)
committerPaolo Bonzini <bonzini@gnu.org>
Tue, 30 Jan 2007 08:01:29 +0000 (08:01 +0000)
* 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.

ChangeLog
data/bison.m4
data/c++.m4
data/java.m4
doc/bison.texinfo
tests/input.at

index 475df516a01e9bd79f217eba91a24b619c9b9255..50fdf536b47b6aac77132d155205cbfba025b3ec 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+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.
+
 2007-01-29  Paolo Bonzini  <bonzini@gnu.org>
 
        * NEWS: Mention java.
index cc6a2b90fd8f2f6261d3afc6afa949d0116f60e4..f5a1a7c97f5fae0c1c2e00ddb36569153b6db2dc 100644 (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)
 # --------------------------------------------
index aad5977d2be8fb78645e9deacccaff8b32803340..c35a427cb6a40dff93bc117ea3a7980808a5f8f1 100644 (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)
index 47b6008a4eb4083d911a002340a98569a6a88b02..38820f0d20fb36eca4ed25fd6499406f0d0f652e 100644 (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])])
 
index 28bbc8c25ef2c299107030d52ca67ea02dbe1392..517a6455e3c783d5449f08da36edc6da21791f56 100644 (file)
@@ -4691,15 +4691,16 @@ already defined, so that the debugging facilities are compiled.
 @end deffn
 @xref{Tracing, ,Tracing Your Parser}.
 
-@deffn {Directive} %define @var{define-variable}
-@deffnx {Directive} %define @var{define-variable} @var{value}
-Define a variable to adjust Bison's behavior.
-The list of available variables and their meanings depends on the selected
-target language and/or the parser skeleton (@pxref{Decl Summary,,%language}).
-The @var{value} can be omitted for boolean variables; for
-boolean variables, the skeletons will treat a @var{value} of @samp{0}
-or @samp{false} as the boolean variable being false, and anything else
-as true.
+@deffn {Directive} %define @var{variable}
+@deffnx {Directive} %define @var{variable} "@var{value}"
+Define a variable to adjust Bison's behavior.  The possible choices for
+@var{variable}, as well as their meanings, depends on the selected target
+language and/or the parser skeleton (@pxref{Decl Summary,,%language}).
+
+Some @var{variable}s may be used as boolean values: in this case, the
+skeleton will conventionally treat a @var{value} of @samp{false} as the
+boolean variable being false; a @var{value} of @samp{true}, or @var{value}
+being omitted altogether, will conversely define the variable as true.
 @end deffn
 
 @deffn {Directive} %defines
index f24f489cc6a58238b1152b1af33b605957ae207b..d21ca41dacf0f8d74539db14b454ddfba3bf67d9 100644 (file)
@@ -820,3 +820,23 @@ input.y:5.9-16: warning: %define variable `special2' is not used
 ]])
 
 AT_CLEANUP
+
+## --------------------------- ##
+## Boolean %define variables.  ##
+## --------------------------- ##
+
+AT_SETUP([Boolean %define variables])
+
+AT_DATA([Input.y],
+[[%language "Java"
+%define public "maybe"
+%define parser_class_name "Input"
+%%
+start: ;
+]])
+
+AT_CHECK([[bison Input.y]], [1], [],
+[[Input.y: invalid value for %define variable `public'
+]])
+
+AT_CLEANUP