mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
%expect-rr is for GLR only
* src/conflicts.c (conflicts_print): Complain about %expect-rr if not in GLR mode, regardless of the number of reduce/reduce conflicts. * tests/conflicts.at (%expect-rr non GLR): New test. * NEWS: Update.
This commit is contained in:
5
NEWS
5
NEWS
@@ -145,6 +145,11 @@ GNU Bison NEWS
|
|||||||
the programmer to prune possible parses based on the values of run-time
|
the programmer to prune possible parses based on the values of run-time
|
||||||
expressions.
|
expressions.
|
||||||
|
|
||||||
|
** The directive %expect-rr is now an error in non GLR mode
|
||||||
|
|
||||||
|
It used to be an error only if used in non GLR mode, _and_ if there are
|
||||||
|
reduce/reduce conflicts.
|
||||||
|
|
||||||
* Noteworthy changes in release ?.? (????-??-??) [?]
|
* Noteworthy changes in release ?.? (????-??-??) [?]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -576,7 +576,7 @@ conflicts_print (void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! glr_parser && rrc_total > 0 && expected_rr_conflicts != -1)
|
if (! glr_parser && expected_rr_conflicts != -1)
|
||||||
{
|
{
|
||||||
complain (Wother, _("%%expect-rr applies only to GLR parsers"));
|
complain (Wother, _("%%expect-rr applies only to GLR parsers"));
|
||||||
expected_rr_conflicts = -1;
|
expected_rr_conflicts = -1;
|
||||||
|
|||||||
@@ -1459,9 +1459,40 @@ state 1
|
|||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
|
|
||||||
## --------------------------------- ##
|
## -------------------- ##
|
||||||
## -W versus %expect and %expect-rr ##
|
## %expect-rr non GLR. ##
|
||||||
## --------------------------------- ##
|
## -------------------- ##
|
||||||
|
|
||||||
|
AT_SETUP([[%expect-rr non GLR]])
|
||||||
|
|
||||||
|
AT_DATA([[1.y]],
|
||||||
|
[[%expect-rr 0
|
||||||
|
%%
|
||||||
|
exp: 'a'
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_BISON_CHECK([[1.y]], [[0]], [],
|
||||||
|
[[1.y: warning: %expect-rr applies only to GLR parsers [-Wother]
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_DATA([[2.y]],
|
||||||
|
[[%expect-rr 1
|
||||||
|
%%
|
||||||
|
exp: 'a' | 'a';
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_BISON_CHECK([[2.y]], [[0]], [],
|
||||||
|
[[2.y: warning: %expect-rr applies only to GLR parsers [-Wother]
|
||||||
|
2.y: conflicts: 1 reduce/reduce
|
||||||
|
2.y:3.12-14: warning: rule useless in parser due to conflicts: exp: 'a' [-Wother]
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
|
||||||
|
## ---------------------------------- ##
|
||||||
|
## -W versus %expect and %expect-rr. ##
|
||||||
|
## ---------------------------------- ##
|
||||||
|
|
||||||
AT_SETUP([[-W versus %expect and %expect-rr]])
|
AT_SETUP([[-W versus %expect and %expect-rr]])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user