]> git.saurik.com Git - bison.git/commitdiff
Use "%no-default-prec" instead of "%default-prec 0".
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 1 Oct 2003 21:33:24 +0000 (21:33 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 1 Oct 2003 21:33:24 +0000 (21:33 +0000)
ChangeLog
NEWS
doc/bison.texinfo
src/parse-gram.y
src/scan-gram.l
tests/conflicts.at

index 26b43003c97d6861428430ea7759533ecbc21f4a..f4ea6e4aeb2e89eca1a05267ad9d86e510ed6bb6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2003-10-01  Paul Eggert  <eggert@twinsun.com>
+
+       * src/parse-gram.h (PERCENT_NO_DEFAULT_PREC): New token.
+       (grammar_declaration): Use it.
+       * src/scan-gram.l: New token %no-default-prec.
+       * tests/conflicts.at: Revamp tests to use %no-default-prec.
+       * NEWS, doc/bison.texinfo: Document the above.
+
 2003-10-01  Akim Demaille  <akim@epita.fr>
 
        VCG no longer supports long_straight_phase.
diff --git a/NEWS b/NEWS
index 66e18d36ac635f4c12b360a8ddb8b381b81cb4c5..59c53ff423ffbcafd3a777788184cd61a74bfda5 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,8 +3,8 @@ Bison News
 
 Changes in version 1.875c:
 
-* New %default-prec declaration, to enable (the default) or disable
-  default rule precedences.
+* New %no-default-prec declaration, to disable default rule precedences.
+  New %default-prec declaration, to reestablish the default.
 
 Changes in version 1.875b, 2003-06-17:
 
index d69fc169994c5e0075a7018ee79ecbac88235aa9..a6e2ee37011f443b9fb9133df0d5784431412357 100644 (file)
@@ -3684,8 +3684,7 @@ Using it in a way that would be associative is a syntax error.
 @end deffn
 
 @deffn {Directive} %default-prec
-Specify whether to assign a precedence to rules lacking an
-explicit @code{%prec} modifier
+Assign a precedence to rules lacking an explicit @code{%prec} modifier
 (@pxref{Contextual Precedence, ,Context-Dependent Precedence}).
 @end deffn
 
@@ -3759,6 +3758,12 @@ and so on.  @xref{Multiple Parsers, ,Multiple Parsers in the Same
 Program}.
 @end deffn
 
+@deffn {Directive} %no-default-prec
+Do not assign a precedence to rules lacking an explicit @code{%prec}
+modifier (@pxref{Contextual Precedence, ,Context-Dependent
+Precedence}).
+@end deffn
+
 @deffn {Directive} %no-parser
 Do not include any C code in the parser file; generate tables only.  The
 parser file contains just @code{#define} directives and static variable
@@ -4862,20 +4867,20 @@ minus, Bison silently assumes that minus has its usual precedence.
 This kind of problem can be tricky to debug, since one typically
 discovers the mistake only by testing the code.
 
-The @code{%default-prec 0;} declaration makes it easier to discover
+The @code{%no-default-prec;} declaration makes it easier to discover
 this kind of problem systematically.  It causes rules that lack a
 @code{%prec} modifier to have no precedence, even if the last terminal
 symbol mentioned in their components has a declared precedence.
 
-If @code{%default-prec 0;} is in effect, you must specify @code{%prec}
+If @code{%no-default-prec;} is in effect, you must specify @code{%prec}
 for all rules that participate in precedence conflict resolution.
 Then you will see any shift/reduce conflict until you tell Bison how
 to resolve it, either by changing your grammar or by adding an
 explicit precedence.  This will probably add declarations to the
 grammar, but it helps to protect against incorrect rule precedences.
 
-The effect of @code{%default-prec 0;} can be reversed by giving
-@code{%default-prec 1;}, which is the default.
+The effect of @code{%no-default-prec;} can be reversed by giving
+@code{%default-prec;}, which is the default.
 
 @node Parser States
 @section Parser States
@@ -6808,10 +6813,10 @@ parsing.  @xref{Parser Function, ,The Parser Function @code{yyparse}}.
 Equip the parser for debugging.  @xref{Decl Summary}.
 @end deffn
 
-@deffn {Directive} %default-prec @var{state};
-Bison declaration to specify whether to assign a precedence to rules
-that lack an explicit @samp{%prec} modifier.  @xref{Contextual
-Precedence, ,Context-Dependent Precedence}.
+@deffn {Directive} %default-prec
+Assign a precedence to rules that lack an explicit @samp{%prec}
+modifier.  @xref{Contextual Precedence, ,Context-Dependent
+Precedence}.
 @end deffn
 
 @deffn {Directive} %defines
@@ -6867,6 +6872,12 @@ function is applied to the two semantic values to get a single result.
 Bison declaration to rename the external symbols.  @xref{Decl Summary}.
 @end deffn
 
+@deffn {Directive} %no-default-prec
+Do not assign a precedence to rules that lack an explicit @samp{%prec}
+modifier.  @xref{Contextual Precedence, ,Context-Dependent
+Precedence}.
+@end deffn
+
 @deffn {Directive} %no-lines
 Bison declaration to avoid generating @code{#line} directives in the
 parser file.  @xref{Decl Summary}.
index 642a97ccb750f63a7d782f829b7239cb61857525..eb9c97092aa9abf4ea62bee10b3795790bd9121c 100644 (file)
@@ -126,6 +126,7 @@ int current_prec = 0;
   PERCENT_LEX_PARAM       "%lex-param {...}"
   PERCENT_LOCATIONS       "%locations"
   PERCENT_NAME_PREFIX     "%name-prefix"
+  PERCENT_NO_DEFAULT_PREC "%no-default-prec"
   PERCENT_NO_LINES        "%no-lines"
   PERCENT_NONDETERMINISTIC_PARSER
                           "%nondeterministic-parser"
@@ -241,12 +242,13 @@ grammar_declaration:
        symbol_printer_set (list->sym, $1, list->location);
       symbol_list_free ($2);
     }
-| "%default-prec" INT
+| "%default-prec"
     {
-      if (0 <= $2 && $2 <= 1)
-       default_prec = $2;
-      else
-       complain_at (@1, _("invalid value for `%default-prec'"));
+      default_prec = true;
+    }
+| "%no-default-prec"
+    {
+      default_prec = false;
     }
 ;
 
index a327501560b2b2737722294ed62154bf75bd3e21..5cbacfc13e1b05004338e4784b785a0075d0706e 100644 (file)
@@ -198,6 +198,7 @@ splice       (\\[ \f\t\v]*\n)*
   "%locations"            return PERCENT_LOCATIONS;
   "%merge"               return PERCENT_MERGE;
   "%name"[-_]"prefix"     return PERCENT_NAME_PREFIX;
+  "%no"[-_]"default"[-_]"prec" return PERCENT_NO_DEFAULT_PREC;
   "%no"[-_]"lines"        return PERCENT_NO_LINES;
   "%nonassoc"             return PERCENT_NONASSOC;
   "%nondeterministic-parser"   return PERCENT_NONDETERMINISTIC_PARSER;
index 259827bda6021fb97c98e8c7813d6b6c23f79ae4..25885d5c3bc0d38c5609fdc796c4411b7be27327 100644 (file)
@@ -550,11 +550,11 @@ input.y: warning: expected 0 reduce/reduce conflicts
 AT_CLEANUP
 
 
-## ---------------------------- ##
-## %default-prec without %prec  ##
-## ---------------------------- ##
+## ------------------------------- ##
+## %no-default-prec without %prec  ##
+## ------------------------------- ##
 
-AT_SETUP([%default-prec without %prec])
+AT_SETUP([%no-default-prec without %prec])
 
 AT_DATA([[input.y]],
 [[%left '+'
@@ -562,7 +562,7 @@ AT_DATA([[input.y]],
 
 %%
 
-%default-prec 0;
+%no-default-prec;
 
 e:   e '+' e
    | e '*' e
@@ -576,11 +576,11 @@ AT_CHECK([bison -o input.c input.y], 0, [],
 AT_CLEANUP
 
 
-## ------------------------- ##
-## %default-prec with %prec  ##
-## ------------------------- ##
+## ---------------------------- ##
+## %no-default-prec with %prec  ##
+## ---------------------------- ##
 
-AT_SETUP([%default-prec with %prec])
+AT_SETUP([%no-default-prec with %prec])
 
 AT_DATA([[input.y]],
 [[%left '+'
@@ -588,7 +588,7 @@ AT_DATA([[input.y]],
 
 %%
 
-%default-prec 0;
+%no-default-prec;
 
 e:   e '+' e %prec '+'
    | e '*' e %prec '*'
@@ -601,10 +601,10 @@ AT_CLEANUP
 
 
 ## ---------------- ##
-## %default-prec 1  ##
+## %default-prec    ##
 ## ---------------- ##
 
-AT_SETUP([%default-prec 1])
+AT_SETUP([%default-prec])
 
 AT_DATA([[input.y]],
 [[%left '+'
@@ -612,7 +612,7 @@ AT_DATA([[input.y]],
 
 %%
 
-%default-prec 1;
+%default-prec;
 
 e:   e '+' e
    | e '*' e