mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
NEWS: update for fixits and --update
This commit is contained in:
66
NEWS
66
NEWS
@@ -2,6 +2,59 @@ GNU Bison NEWS
|
||||
|
||||
* Noteworthy changes in release ?.? (????-??-??) [?]
|
||||
|
||||
** New features
|
||||
|
||||
*** Generation of fix-its for IDEs/Editors
|
||||
|
||||
When given the new option -ffixit (aka -fdiagnostics-parseable-fixits),
|
||||
bison now generates machine readable editing instructions to fix some
|
||||
issues. Currently, this is mostly limited to updating deprecated
|
||||
directives and removing duplicates. For instance:
|
||||
|
||||
$ cat foo.y
|
||||
%error-verbose
|
||||
%define parser_class_name "Parser"
|
||||
%define api.parser.class "Parser"
|
||||
%%
|
||||
exp:;
|
||||
|
||||
See the "fix-it:" lines below:
|
||||
|
||||
$ bison -ffixit foo.y
|
||||
foo.y:1.1-14: warning: deprecated directive, use '%define parse.error verbose' [-Wdeprecated]
|
||||
%error-verbose
|
||||
^~~~~~~~~~~~~~
|
||||
fix-it:"foo.y":{1:1-1:15}:"%define parse.error verbose"
|
||||
foo.y:2.1-34: warning: deprecated directive, use '%define api.parser.class {Parser}' [-Wdeprecated]
|
||||
%define parser_class_name "Parser"
|
||||
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
fix-it:"foo.y":{2:1-2:35}:"%define api.parser.class {Parser}"
|
||||
foo.y:3.1-33: error: %define variable 'api.parser.class' redefined
|
||||
%define api.parser.class "Parser"
|
||||
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
foo.y:2.1-34: previous definition
|
||||
%define parser_class_name "Parser"
|
||||
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
fix-it:"foo.y":{3:1-3:34}:""
|
||||
foo.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
|
||||
|
||||
This uses the same output format as GCC and Clang.
|
||||
|
||||
*** Updating grammar files
|
||||
|
||||
Fixes can be applied on the fly. The previous example ends with the
|
||||
suggestion to re-run bison with the option -u/--update, which results in a
|
||||
cleaner grammar file.
|
||||
|
||||
$ bison --update foo.y
|
||||
[...]
|
||||
bison: file 'foo.y' was updated (backup: 'foo.y~')
|
||||
|
||||
$ cat foo.y
|
||||
%define parse.error verbose
|
||||
%define api.parser.class {Parser}
|
||||
%%
|
||||
exp:;
|
||||
|
||||
* Noteworthy changes in release 3.2.90 (2019-01-12) [beta]
|
||||
|
||||
@@ -12,6 +65,8 @@ GNU Bison NEWS
|
||||
|
||||
** Deprecated features
|
||||
|
||||
*** Deprecated directives
|
||||
|
||||
The %error-verbose directive is deprecated in favor of '%define
|
||||
parse.error verbose' since Bison 3.0, but no warning was issued.
|
||||
|
||||
@@ -23,6 +78,17 @@ GNU Bison NEWS
|
||||
@code{YYTOKENTYPE}, @code{yytokentype}, @code{YYSTYPE}, @code{YYLTYPE},
|
||||
etc.
|
||||
|
||||
Users of Flex that move from '%name-prefix "xx"' to '%define api.prefix
|
||||
{xx}' will typically have to update YY_DECL from
|
||||
|
||||
#define YY_DECL int xxlex (YYSTYPE *yylval, YYLTYPE *yylloc)
|
||||
|
||||
to
|
||||
|
||||
#define YY_DECL int xxlex (XXSTYPE *yylval, XXLTYPE *yylloc)
|
||||
|
||||
*** Deprecated %define variable names
|
||||
|
||||
The following variables, mostly related to parsers in Java, have been
|
||||
renamed for consistency. Backward compatibility is ensured, but upgrading
|
||||
is recommended.
|
||||
|
||||
Reference in New Issue
Block a user