mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 04:13:03 +00:00
Use "%no-default-prec" instead of "%default-prec 0".
This commit is contained in:
@@ -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.
|
||||
|
||||
4
NEWS
4
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:
|
||||
|
||||
|
||||
@@ -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}.
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user