summaryrefslogtreecommitdiff
path: root/NEWS
diff options
context:
space:
mode:
authorAkim Demaille <akim.demaille@gmail.com>2021-08-05 08:39:24 +0200
committerAkim Demaille <akim.demaille@gmail.com>2021-08-09 07:17:19 +0200
commit3c5f73fe51a6d61e6a2f6219a9320bf4fd32ae66 (patch)
treed6f625d49abe74ba2ba2036f756dbf8e3bc8d21b /NEWS
parentdabde7c560f249f30e47a1fce7cf29891023f3fc (diff)
downloadbison-3c5f73fe51a6d61e6a2f6219a9320bf4fd32ae66.tar.gz
yacc: comply with recent POSIX updates: declare yyerror and yylex
In POSIX Yacc mode, declare yyerror and yylex unless already #defined, or if YYERROR_IS_DECLARED/YYLEX_IS_DECLARED are defined (for consistency with Bison's YYSTYPE_IS_DECLARED/YYLTYPE_IS_DECLARED). See <https://austingroupbugs.net/view.php?id=1388#c5220>. * data/skeletons/c.m4 (b4_function_declare): Resurect. (b4_lex_formals): Since we will possibly expose this prototype in the header, take the prefix into account. * data/skeletons/yacc.c (b4_declare_yyerror_and_yylex): New. (b4_shared_declarations): Use it. * tests/local.at (AT_YACC_IF): New. When in Yacc mode, set the `yacc` Autotest keyword. (AT_YYERROR_DECLARE(c)): Don't declare in Yacc mode, to avoid clashes (since this signature is static). (AT_YYERROR_DEFINE(c)): Don't define as static in Yacc mode. * tests/regression.at (Early token definitions with --yacc): Specify that we are in Yacc mode.
Diffstat (limited to 'NEWS')
-rw-r--r--NEWS8
1 files changed, 8 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 8cecaf68..a908bdb0 100644
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,14 @@ GNU Bison NEWS
now generates a *.gv file by default, instead of *.dot. A transition
started in Bison 3.4.
+ To comply with the latest POSIX standard, in Yacc compatibility mode
+ (options `-y`/`--yacc`) Bison now generates prototypes for yyerror and
+ yylex. In some situations, this is breaking compatibility: if the user
+ has already declared these functions but with some differences (e.g., to
+ declare them as static, or to use specific attributes), the generated
+ parser will fail to compile. To disable these prototypes, #define yyerror
+ (to `yyerror`), and likewise for yylex.
+
** Deprecated features
Support for the YYPRINT macro is removed. It worked only with yacc.c and