mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
NEWS: update
This commit is contained in:
10
NEWS
10
NEWS
@@ -2,16 +2,6 @@ GNU Bison NEWS
|
||||
|
||||
* Noteworthy changes in release ?.? (????-??-??) [?]
|
||||
|
||||
** Expected features for Bison 3.3
|
||||
|
||||
- per-rule %expect/%expect-rr
|
||||
- improve syntax errors (UTF-8, internationalization)
|
||||
- move bitsets to gnulib
|
||||
- relative paths (allowing to relocate an installation of bison)
|
||||
- use gettext-h in gnulib instead of gettext
|
||||
- constexpr/noexcept in C++
|
||||
- resolving %type/%nterm/%type inconsistencies
|
||||
|
||||
** Backward incompatible changes
|
||||
|
||||
Support for DJGPP, which has been unmaintained and untested for years, is
|
||||
|
||||
57
TODO
57
TODO
@@ -1,3 +1,51 @@
|
||||
* Bison 3.4
|
||||
** injection rules
|
||||
** improve syntax errors (UTF-8, internationalization)
|
||||
Bison depends on the current locale. For instance:
|
||||
|
||||
%define parse.error verbose
|
||||
%code top {
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
void yyerror(const char* msg) { fprintf(stderr, "%s\n", msg); }
|
||||
int yylex() { return 0; }
|
||||
}
|
||||
%%
|
||||
exp: "↦" | "🎅🐃" | '\n'
|
||||
%%
|
||||
int main() { return yyparse(); }
|
||||
|
||||
gives different results with/without LC_ALL=C.
|
||||
|
||||
$ LC_ALL=C /opt/local/bin/bison /tmp/mangle.y -o ascii.c
|
||||
$ /opt/local/bin/bison /tmp/mangle.y -o utf8.c
|
||||
$ diff -u ascii.c utf8.c -I#line
|
||||
--- ascii.c 2019-01-12 08:15:35.878010093 +0100
|
||||
+++ utf8.c 2019-01-12 08:15:38.856495929 +0100
|
||||
@@ -415,9 +415,8 @@
|
||||
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
|
||||
static const char *const yytname[] =
|
||||
{
|
||||
- "$end", "error", "$undefined", "\"\\342\\206\\246\"",
|
||||
- "\"\\360\\237\\216\\205\\360\\237\\220\\203\"", "'\\n'", "$accept",
|
||||
- "exp", YY_NULLPTR
|
||||
+ "$end", "error", "$undefined", "\"↦\"", "\"🎅🐃\"", "'\\n'",
|
||||
+ "$accept", "exp", YY_NULLPTR
|
||||
};
|
||||
#endif
|
||||
|
||||
$ gcc ascii.c -o ascii && ./ascii
|
||||
syntax error, unexpected $end, expecting "\342\206\246" or "\360\237\216\205\360\237\220\203" or '\n'
|
||||
$ gcc utf8.c -o utf8 && ./utf8
|
||||
syntax error, unexpected $end, expecting ↦ or 🎅🐃 or '\n'
|
||||
|
||||
|
||||
While at it, we should stop using "$end" by default, in favor of "end of
|
||||
file", or "end of input", whatever.
|
||||
|
||||
** use gettext-h in gnulib instead of gettext
|
||||
** use gnulib-po
|
||||
|
||||
* Completion
|
||||
Several features are not available in all the backends.
|
||||
|
||||
@@ -6,6 +54,15 @@ Several features are not available in all the backends.
|
||||
- glr: Java
|
||||
- token constructors: Java and C
|
||||
|
||||
* Bugs
|
||||
** Autotest has quotation issues
|
||||
tests/input.at:1730:AT_SETUP([%define errors])
|
||||
|
||||
->
|
||||
|
||||
$ ./tests/testsuite -l | grep errors | sed q
|
||||
38: input.at:1730 errors
|
||||
|
||||
* Short term
|
||||
** consistency
|
||||
token vs terminal
|
||||
|
||||
@@ -1447,9 +1447,9 @@ dnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR
|
||||
|
||||
|
||||
|
||||
## ------------------------------- ##
|
||||
## ------------------------------ ##
|
||||
## %define lr.default-reduction. ##
|
||||
## ------------------------------- ##
|
||||
## ------------------------------ ##
|
||||
|
||||
# AT_TEST_LR_DEFAULT_REDUCTIONS(GRAMMAR, INPUT, TABLES)
|
||||
# -----------------------------------------------------
|
||||
|
||||
@@ -419,7 +419,7 @@ AT_CLEANUP
|
||||
AT_SETUP([Token definitions])
|
||||
|
||||
AT_BISON_OPTION_PUSHDEFS
|
||||
# Bison managed, when fed with '%token 'f' "f"' to #define 'f'!
|
||||
|
||||
AT_DATA_GRAMMAR([input.y],
|
||||
[%{
|
||||
]AT_YYERROR_DECLARE[
|
||||
@@ -427,7 +427,7 @@ AT_DATA_GRAMMAR([input.y],
|
||||
%}
|
||||
[%define parse.error verbose
|
||||
%token MYEOF 0 "end of file"
|
||||
%token 'a' "a"
|
||||
%token 'a' "a" // Bison managed, when fed with '%token 'f' "f"' to #define 'f'!
|
||||
%token B_TOKEN "b"
|
||||
%token C_TOKEN 'c'
|
||||
%token 'd' D_TOKEN
|
||||
|
||||
Reference in New Issue
Block a user