From: Paul Eggert <eggert@cs.ucla.edu>
Date: Wed, 1 Oct 2003 21:33:24 +0000 (+0000)
Subject: Use "%no-default-prec" instead of "%default-prec 0".
X-Git-Tag: BISON-2_0~202
X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/22fccf958f542d321740f6718611912ca5fec985

Use "%no-default-prec" instead of "%default-prec 0".
---

diff --git a/ChangeLog b/ChangeLog
index 26b43003..f4ea6e4a 100644
--- 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 66e18d36..59c53ff4 100644
--- 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:
 
diff --git a/doc/bison.texinfo b/doc/bison.texinfo
index d69fc169..a6e2ee37 100644
--- a/doc/bison.texinfo
+++ b/doc/bison.texinfo
@@ -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}.
diff --git a/src/parse-gram.y b/src/parse-gram.y
index 642a97cc..eb9c9709 100644
--- a/src/parse-gram.y
+++ b/src/parse-gram.y
@@ -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;
     }
 ;
 
diff --git a/src/scan-gram.l b/src/scan-gram.l
index a3275015..5cbacfc1 100644
--- a/src/scan-gram.l
+++ b/src/scan-gram.l
@@ -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;
diff --git a/tests/conflicts.at b/tests/conflicts.at
index 259827bd..25885d5c 100644
--- a/tests/conflicts.at
+++ b/tests/conflicts.at
@@ -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