mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-20 17:53:02 +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>
|
2003-10-01 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
VCG no longer supports long_straight_phase.
|
VCG no longer supports long_straight_phase.
|
||||||
|
|||||||
4
NEWS
4
NEWS
@@ -3,8 +3,8 @@ Bison News
|
|||||||
|
|
||||||
Changes in version 1.875c:
|
Changes in version 1.875c:
|
||||||
|
|
||||||
* New %default-prec declaration, to enable (the default) or disable
|
* New %no-default-prec declaration, to disable default rule precedences.
|
||||||
default rule precedences.
|
New %default-prec declaration, to reestablish the default.
|
||||||
|
|
||||||
Changes in version 1.875b, 2003-06-17:
|
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
|
@end deffn
|
||||||
|
|
||||||
@deffn {Directive} %default-prec
|
@deffn {Directive} %default-prec
|
||||||
Specify whether to assign a precedence to rules lacking an
|
Assign a precedence to rules lacking an explicit @code{%prec} modifier
|
||||||
explicit @code{%prec} modifier
|
|
||||||
(@pxref{Contextual Precedence, ,Context-Dependent Precedence}).
|
(@pxref{Contextual Precedence, ,Context-Dependent Precedence}).
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@@ -3759,6 +3758,12 @@ and so on. @xref{Multiple Parsers, ,Multiple Parsers in the Same
|
|||||||
Program}.
|
Program}.
|
||||||
@end deffn
|
@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
|
@deffn {Directive} %no-parser
|
||||||
Do not include any C code in the parser file; generate tables only. The
|
Do not include any C code in the parser file; generate tables only. The
|
||||||
parser file contains just @code{#define} directives and static variable
|
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
|
This kind of problem can be tricky to debug, since one typically
|
||||||
discovers the mistake only by testing the code.
|
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
|
this kind of problem systematically. It causes rules that lack a
|
||||||
@code{%prec} modifier to have no precedence, even if the last terminal
|
@code{%prec} modifier to have no precedence, even if the last terminal
|
||||||
symbol mentioned in their components has a declared precedence.
|
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.
|
for all rules that participate in precedence conflict resolution.
|
||||||
Then you will see any shift/reduce conflict until you tell Bison how
|
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
|
to resolve it, either by changing your grammar or by adding an
|
||||||
explicit precedence. This will probably add declarations to the
|
explicit precedence. This will probably add declarations to the
|
||||||
grammar, but it helps to protect against incorrect rule precedences.
|
grammar, but it helps to protect against incorrect rule precedences.
|
||||||
|
|
||||||
The effect of @code{%default-prec 0;} can be reversed by giving
|
The effect of @code{%no-default-prec;} can be reversed by giving
|
||||||
@code{%default-prec 1;}, which is the default.
|
@code{%default-prec;}, which is the default.
|
||||||
|
|
||||||
@node Parser States
|
@node Parser States
|
||||||
@section 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}.
|
Equip the parser for debugging. @xref{Decl Summary}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Directive} %default-prec @var{state};
|
@deffn {Directive} %default-prec
|
||||||
Bison declaration to specify whether to assign a precedence to rules
|
Assign a precedence to rules that lack an explicit @samp{%prec}
|
||||||
that lack an explicit @samp{%prec} modifier. @xref{Contextual
|
modifier. @xref{Contextual Precedence, ,Context-Dependent
|
||||||
Precedence, ,Context-Dependent Precedence}.
|
Precedence}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Directive} %defines
|
@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}.
|
Bison declaration to rename the external symbols. @xref{Decl Summary}.
|
||||||
@end deffn
|
@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
|
@deffn {Directive} %no-lines
|
||||||
Bison declaration to avoid generating @code{#line} directives in the
|
Bison declaration to avoid generating @code{#line} directives in the
|
||||||
parser file. @xref{Decl Summary}.
|
parser file. @xref{Decl Summary}.
|
||||||
|
|||||||
@@ -126,6 +126,7 @@ int current_prec = 0;
|
|||||||
PERCENT_LEX_PARAM "%lex-param {...}"
|
PERCENT_LEX_PARAM "%lex-param {...}"
|
||||||
PERCENT_LOCATIONS "%locations"
|
PERCENT_LOCATIONS "%locations"
|
||||||
PERCENT_NAME_PREFIX "%name-prefix"
|
PERCENT_NAME_PREFIX "%name-prefix"
|
||||||
|
PERCENT_NO_DEFAULT_PREC "%no-default-prec"
|
||||||
PERCENT_NO_LINES "%no-lines"
|
PERCENT_NO_LINES "%no-lines"
|
||||||
PERCENT_NONDETERMINISTIC_PARSER
|
PERCENT_NONDETERMINISTIC_PARSER
|
||||||
"%nondeterministic-parser"
|
"%nondeterministic-parser"
|
||||||
@@ -241,12 +242,13 @@ grammar_declaration:
|
|||||||
symbol_printer_set (list->sym, $1, list->location);
|
symbol_printer_set (list->sym, $1, list->location);
|
||||||
symbol_list_free ($2);
|
symbol_list_free ($2);
|
||||||
}
|
}
|
||||||
| "%default-prec" INT
|
| "%default-prec"
|
||||||
{
|
{
|
||||||
if (0 <= $2 && $2 <= 1)
|
default_prec = true;
|
||||||
default_prec = $2;
|
}
|
||||||
else
|
| "%no-default-prec"
|
||||||
complain_at (@1, _("invalid value for `%default-prec'"));
|
{
|
||||||
|
default_prec = false;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -198,6 +198,7 @@ splice (\\[ \f\t\v]*\n)*
|
|||||||
"%locations" return PERCENT_LOCATIONS;
|
"%locations" return PERCENT_LOCATIONS;
|
||||||
"%merge" return PERCENT_MERGE;
|
"%merge" return PERCENT_MERGE;
|
||||||
"%name"[-_]"prefix" return PERCENT_NAME_PREFIX;
|
"%name"[-_]"prefix" return PERCENT_NAME_PREFIX;
|
||||||
|
"%no"[-_]"default"[-_]"prec" return PERCENT_NO_DEFAULT_PREC;
|
||||||
"%no"[-_]"lines" return PERCENT_NO_LINES;
|
"%no"[-_]"lines" return PERCENT_NO_LINES;
|
||||||
"%nonassoc" return PERCENT_NONASSOC;
|
"%nonassoc" return PERCENT_NONASSOC;
|
||||||
"%nondeterministic-parser" return PERCENT_NONDETERMINISTIC_PARSER;
|
"%nondeterministic-parser" return PERCENT_NONDETERMINISTIC_PARSER;
|
||||||
|
|||||||
@@ -550,11 +550,11 @@ input.y: warning: expected 0 reduce/reduce conflicts
|
|||||||
AT_CLEANUP
|
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]],
|
AT_DATA([[input.y]],
|
||||||
[[%left '+'
|
[[%left '+'
|
||||||
@@ -562,7 +562,7 @@ AT_DATA([[input.y]],
|
|||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
%default-prec 0;
|
%no-default-prec;
|
||||||
|
|
||||||
e: e '+' e
|
e: e '+' e
|
||||||
| e '*' e
|
| e '*' e
|
||||||
@@ -576,11 +576,11 @@ AT_CHECK([bison -o input.c input.y], 0, [],
|
|||||||
AT_CLEANUP
|
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]],
|
AT_DATA([[input.y]],
|
||||||
[[%left '+'
|
[[%left '+'
|
||||||
@@ -588,7 +588,7 @@ AT_DATA([[input.y]],
|
|||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
%default-prec 0;
|
%no-default-prec;
|
||||||
|
|
||||||
e: e '+' e %prec '+'
|
e: e '+' e %prec '+'
|
||||||
| 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]],
|
AT_DATA([[input.y]],
|
||||||
[[%left '+'
|
[[%left '+'
|
||||||
@@ -612,7 +612,7 @@ AT_DATA([[input.y]],
|
|||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
%default-prec 1;
|
%default-prec;
|
||||||
|
|
||||||
e: e '+' e
|
e: e '+' e
|
||||||
| e '*' e
|
| e '*' e
|
||||||
|
|||||||
Reference in New Issue
Block a user