X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/e4c0985b5cf193831a3b7fe2aab792cab3ffe6e2..11b192127cac086338bfaa43f3bab3acda8e3a20:/NEWS diff --git a/NEWS b/NEWS index 8f52f80c..a70c23db 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,12 @@ GNU Bison NEWS ** Warnings +*** Deprecated constructs + + The new 'deprecated' warning category flags obsolete constructs whose + support will be discontinued. It is enabled by default. These warnings + used to be reported as 'other' warnings. + *** Warning categories are now displayed For instance: @@ -36,18 +42,17 @@ GNU Bison NEWS 3.28-34: warning: type is used, but is not associated to any symbol 4.28-34: warning: type is used, but is not associated to any symbol -*** Undeclared symbols +*** Undefined but unused symbols - Bison used to raise an error for %printer and %destructor directives for - undefined symbols. + Bison used to raise an error for undefined symbols that are not used in + the grammar. This is now only a warning. %printer {} symbol1 %destructor {} symbol2 + %type symbol3 %% exp: "a"; - This is now only a warning. - *** Useless destructors or printers Bison now warns about useless destructors or printers. In the following @@ -62,6 +67,53 @@ GNU Bison NEWS %printer {} token1 %destructor {} token2 +*** Conflicts + + The warnings and error messages about shift/reduce and reduce/reduce + conflicts have been normalized. For instance on the following foo.y file: + + %glr-parser + %% + exp: exp '+' exp | '0' | '0'; + + compare the previous version of bison: + + $ bison foo.y + foo.y: conflicts: 1 shift/reduce, 2 reduce/reduce + $ bison -Werror foo.y + bison: warnings being treated as errors + foo.y: conflicts: 1 shift/reduce, 2 reduce/reduce + + with the new behavior: + + $ bison foo.y + foo.y: warning: 1 shift/reduce conflict [-Wconflicts-sr] + foo.y: warning: 2 reduce/reduce conflicts [-Wconflicts-rr] + $ bison -Werror foo.y + bison: warnings being treated as errors + foo.y: warning: 1 shift/reduce conflict [-Wconflicts-sr] + foo.y: warning: 2 reduce/reduce conflicts [-Wconflicts-rr] + + When %expect or %expect-rr is used, such as with bar.y: + + %expect 0 + %glr-parser + %% + exp: exp '+' exp | '0' | '0'; + + Former behavior: + + $ bison bar.y + bar.y: conflicts: 1 shift/reduce, 2 reduce/reduce + bar.y: expected 0 shift/reduce conflicts + bar.y: expected 0 reduce/reduce conflicts + + New one: + + $ bison bar.y + bar.y: shift/reduce conflicts: 1 found, 0 expected + bar.y: reduce/reduce conflicts: 2 found, 0 expected + ** Additional yylex/yyparse arguments The new directive %param declares additional arguments to both yylex and @@ -79,9 +131,9 @@ GNU Bison NEWS ** Java skeleton improvements - The constants for token names were moved to the Lexer interface. - Also, it is possible to add code to the parser's constructors using - "%code init" and "%define init_throws". + The constants for token names were moved to the Lexer interface. Also, it + is possible to add code to the parser's constructors using "%code init" + and "%define init_throws". ** C++ skeletons improvements @@ -122,26 +174,54 @@ GNU Bison NEWS ** Variable api.namespace - The "namespace" variable is renamed "api.namespace". Backward + The 'namespace' variable is renamed 'api.namespace'. Backward compatibility is ensured, but upgrading is recommended. ** Variable parse.error - The variable error controls the verbosity of error messages. The - use of the %error-verbose directive is deprecated in favor of - %define parse.error "verbose". + This variable controls the verbosity of error messages. The use of the + %error-verbose directive is deprecated in favor of "%define parse.error + verbose". ** Semantic predicates - The new, experimental, semantic-predicate feature allows actions of - the form %?{ BOOLEAN-EXPRESSION }, which cause syntax errors (as for + The new, experimental, semantic-predicate feature allows actions of the + form "%?{ BOOLEAN-EXPRESSION }", which cause syntax errors (as for YYERROR) if the expression evaluates to 0, and are evaluated immediately - in GLR parsers, rather than being deferred. The result is that they - allow the programmer to prune possible parses based on the values of - run-time expressions. + in GLR parsers, rather than being deferred. The result is that they allow + the programmer to prune possible parses based on the values of run-time + expressions. + +** The directive %expect-rr is now an error in non GLR mode + + It used to be an error only if used in non GLR mode, _and_ if there are + reduce/reduce conflicts. * Noteworthy changes in release ?.? (????-??-??) [?] +** Bug fixes + + Bugs in the test suite have been fixed. + + Some errors in translations have been addressed, and --help now directs + users to the appropriate place to report them. + + Stray Info files shipped by accident are removed. + + Incorrect definitions of YY_, issued by yacc.c when no parser header is + generated, are removed. + +** Changes in the format of errors and exceptions output + + This used to be the format of many error reports: + + foo.y:5.10-24: result type clash on merge function 'merge': != + foo.y:4.13-27: previous declaration + + It is now: + + foo.y:5.10-25: result type clash on merge function 'merge': != + foo.y:4.13-27: previous declaration * Noteworthy changes in release 2.6.2 (2012-08-03) [stable]