]> git.saurik.com Git - bison.git/blobdiff - NEWS
api.value.type: diagnose guaranteed failure with --yacc
[bison.git] / NEWS
diff --git a/NEWS b/NEWS
index 3816fdd510dae9804d8f79a748582ed19daa3ed4..60a62e1de44d8f3f590e41da06a724931f74803d 100644 (file)
--- 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).
 
   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)
 ** 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
 
   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"
 
     %define api.value.type "union"
     %token <int> INT "integer"