Merge branch 'maint'

* maint:
  maint: post-release administrivia
  version 3.3.1
  yacc: issue warnings, not errors, for Bison extensions
  style: formatting changes in NEWS and complain.c
  tests: don't depend on the user's definition of SHELL
This commit is contained in:
Akim Demaille
2019-01-27 16:44:56 +01:00
7 changed files with 43 additions and 31 deletions

View File

@@ -1 +1 @@
3.3
3.3.1

15
NEWS
View File

@@ -3,13 +3,20 @@ GNU Bison NEWS
* Noteworthy changes in release ?.? (????-??-??) [?]
* Noteworthy changes in release 3.3.1 (2019-01-27) [stable]
** Changes
The option -y/--yacc used to imply -Werror=yacc, which turns uses of Bison
extensions into errors. It now makes them simple warnings (-Wyacc).
* Noteworthy changes in release 3.3 (2019-01-26) [stable]
A new mailing list was created, Bison Announce. It is low traffic, and is
only about announcing new releases and important messages (e.g., polls about
major decisions to make).
A new mailing list was created, Bison Announce. It is low traffic, and is
only about announcing new releases and important messages (e.g., polls
about major decisions to make).
https://lists.gnu.org/mailman/listinfo/bison-announce
https://lists.gnu.org/mailman/listinfo/bison-announce
** Backward incompatible changes

View File

@@ -10308,26 +10308,26 @@ See the documentation of @option{--feature=fixit} below for more details.
@item -y
@itemx --yacc
Act more like the traditional Yacc command. This can cause different
diagnostics to be generated, and may change behavior in other minor
ways. Most importantly, imitate Yacc's output file name conventions,
so that the parser implementation file is called @file{y.tab.c}, and
the other outputs are called @file{y.output} and @file{y.tab.h}.
Also, if generating a deterministic parser in C, generate
@code{#define} statements in addition to an @code{enum} to associate
token numbers with token names. Thus, the following shell script can
substitute for Yacc, and the Bison distribution contains such a script
for compatibility with POSIX:
Act more like the traditional @command{yacc} command. This can cause
different diagnostics to be generated (it implies @option{-Wyacc}), and may
change behavior in other minor ways. Most importantly, imitate Yacc's
output file name conventions, so that the parser implementation file is
called @file{y.tab.c}, and the other outputs are called @file{y.output} and
@file{y.tab.h}. Also, if generating a deterministic parser in C, generate
@code{#define} statements in addition to an @code{enum} to associate token
numbers with token names. Thus, the following shell script can substitute
for Yacc, and the Bison distribution contains such a script for
compatibility with POSIX:
@example
#! /bin/sh
bison -y "$@@"
@end example
The @option{-y}/@option{--yacc} option is intended for use with
traditional Yacc grammars. If your grammar uses a Bison extension
like @samp{%glr-parser}, Bison might not be Yacc-compatible even if
this option is specified.
The @option{-y}/@option{--yacc} option is intended for use with traditional
Yacc grammars. If your grammar uses Bison extensions like
@samp{%glr-parser}, Bison might not be Yacc-compatible even if this option
is specified.
@item -W [@var{category}]
@itemx --warnings[=@var{category}]

View File

@@ -15,6 +15,9 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
SHELL=/bin/sh
export SHELL
me=$(basename "$1" .test)
medir=$(dirname "$1" | sed -e 's,.*examples/,,')

View File

@@ -421,8 +421,10 @@ duplicate_rule_directive (char const *directive,
location first, location second)
{
unsigned i = 0;
complain_indent (&second, complaint, &i, _("only one %s allowed per rule"), directive);
complain_indent (&second, complaint, &i,
_("only one %s allowed per rule"), directive);
i += SUB_INDENT;
complain_indent (&first, complaint, &i, _("previous declaration"));
complain_indent (&first, complaint, &i,
_("previous declaration"));
fixits_register (&second, "");
}

View File

@@ -708,7 +708,7 @@ getargs (int argc, char *argv[])
break;
case 'y':
warning_argmatch ("error=yacc", 0, 6);
warning_argmatch ("yacc", 0, 0);
yacc_loc = command_line_location ();
break;

View File

@@ -1402,15 +1402,15 @@ without_period: "WITHOUT.PERIOD";
AT_BISON_OPTION_POPDEFS
# POSIX Yacc accept periods, but not dashes.
AT_BISON_CHECK([--yacc input.y], [1], [],
[[input.y:1.1-5: error: POSIX Yacc does not support %code [-Werror=yacc]
input.y:9.8-16: error: POSIX Yacc forbids dashes in symbol names: WITH-DASH [-Werror=yacc]
input.y:10.21-34: error: POSIX Yacc does not support string literals [-Werror=yacc]
input.y:12.23-38: error: POSIX Yacc does not support string literals [-Werror=yacc]
input.y:13.1-5: error: POSIX Yacc does not support %code [-Werror=yacc]
input.y:20.8-16: error: POSIX Yacc forbids dashes in symbol names: with-dash [-Werror=yacc]
input.y:22.15-28: error: POSIX Yacc does not support string literals [-Werror=yacc]
input.y:24.17-32: error: POSIX Yacc does not support string literals [-Werror=yacc]
AT_BISON_CHECK([--yacc input.y], [], [],
[[input.y:1.1-5: warning: POSIX Yacc does not support %code [-Wyacc]
input.y:9.8-16: warning: POSIX Yacc forbids dashes in symbol names: WITH-DASH [-Wyacc]
input.y:10.21-34: warning: POSIX Yacc does not support string literals [-Wyacc]
input.y:12.23-38: warning: POSIX Yacc does not support string literals [-Wyacc]
input.y:13.1-5: warning: POSIX Yacc does not support %code [-Wyacc]
input.y:20.8-16: warning: POSIX Yacc forbids dashes in symbol names: with-dash [-Wyacc]
input.y:22.15-28: warning: POSIX Yacc does not support string literals [-Wyacc]
input.y:24.17-32: warning: POSIX Yacc does not support string literals [-Wyacc]
]])
# Dashes are fine for GNU Bison.