summaryrefslogtreecommitdiff
path: root/NEWS
diff options
context:
space:
mode:
authorAkim Demaille <akim@lrde.epita.fr>2013-03-27 09:18:32 +0100
committerAkim Demaille <akim@lrde.epita.fr>2013-04-09 14:07:52 +0200
commit1fa19a769721658bb53177596531afbbea8b4e1c (patch)
tree4b7aee891add899b68c2c2d9b226f75dde8eadf8 /NEWS
parentd1a07886ee63d7346d585d34190162b79a30fdfb (diff)
downloadbison-1fa19a769721658bb53177596531afbbea8b4e1c.tar.gz
api.value.type: diagnose guaranteed failure with --yacc
Instead of generating invalid C code, generate an error when --yacc and '%define api.value.type union' are used together. * data/bison.m4: Issue an error in this case. * tests/types.at (%yacc vs. %define api.value.type union): New, check this error. * doc/bison.texi (Type Generation): Document it. * tests/output.at: Check that '-o y.tab.c' and '-y' behave equally wrt generated file names. * NEWS (Use of YACC='bison -y'): New. Promote the use of 'bison -o y.tab.c'.
Diffstat (limited to 'NEWS')
-rw-r--r--NEWS23
1 files changed, 22 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 3816fdd5..60a62e1d 100644
--- a/NEWS
+++ b/NEWS
@@ -23,6 +23,26 @@ GNU Bison NEWS
Missing semicolons at the end of actions are no longer added (as announced
in the release 2.5).
+*** Use of YACC='bison -y'
+
+ TL;DR: With Autoconf <= 2.69, pass -Wno-yacc to (AM_)YFLAGS if you use
+ Bison extensions.
+
+ Traditional Yacc generates 'y.tab.c' whatever the name of the input file.
+ Therefore Makefiles written for Yacc expect 'y.tab.c' (and possibly
+ 'y.tab.h' and 'y.outout') to be generated from 'foo.y'.
+
+ To this end, for ages, AC_PROG_YACC, Autoconf's macro to look for an
+ implementation of Yacc, was using Bison as 'bison -y'. While it does
+ ensure compatible output file names, it also enables warnings for
+ incompatibilities with POSIX Yacc. In other words, 'bison -y' triggers
+ warnings for Bison extensions.
+
+ Autoconf 2.70+ fixes this incompatibility by using YACC='bison -o y.tab.c'
+ (which also generates 'y.tab.h' and 'y.output' when needed).
+ Alternatively, disable Yacc warnings by passing '-Wno-yacc' to your Yacc
+ flags (YFLAGS, or AM_YFLAGS with Automake).
+
** Bug fixes
*** The epilogue is no longer affected by internal #defines (glr.c)
@@ -276,7 +296,8 @@ GNU Bison NEWS
The %define variable api.value.type supports several special values. The
value "union" means that the user provides genuine types, not union member
- names such as "ival" and "sval" above.
+ names such as "ival" and "sval" above (WARNING: will fail if
+ -y/--yacc/%yacc is enabled).
%define api.value.type "union"
%token <int> INT "integer"