Bison News
----------
+* Changes in version ?.? (????-??-??):
+
+** Additional yylex/yyparse arguments
+
+ The new directive %param declare additional argument to both yylex
+ and yyparse. The %lex-param, %parse-param, and %param directives
+ support one or more arguments. Instead of
+
+ %lex-param {arg1_type *arg1}
+ %lex-param {arg2_type *arg2}
+ %parse-param {arg1_type *arg1}
+ %parse-param {arg2_type *arg2}
+
+ one may now declare
+
+ %param {arg1_type *arg1} {arg2_type *arg2}
+
+** 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".
+
+** C++ skeleton improvements
+
+ The C++ parser features a syntax_error exception, which can be
+ thrown from the scanner or from user rules to raise syntax errors.
+ This facilitates reporting errors caught in sub-functions (e.g.,
+ rejecting too large integral literals from a conversion function
+ used by the scanner, or rejecting invalid combinations from a
+ factory invoked by the user actions).
+
+** Variable api.tokens.prefix
+
+ The variable api.tokens.prefix changes the way tokens are identified in
+ the generated files. This is especially useful to avoid collisions
+ with identifiers in the target language. For instance
+
+ %token FILE for ERROR
+ %define api.tokens.prefix "TOK_"
+ %%
+ start: FILE for ERROR;
+
+ will generate the definition of the symbols TOK_FILE, TOK_for, and
+ TOK_ERROR in the generated sources. In particular, the scanner must
+ use these prefixed token names, although the grammar itself still
+ uses the short names (as in the sample rule given above).
+
+** Variable api.namespace
+
+ 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".
+
+** Semantic predicates
+
+ 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
+ runtime expressions.
+
* Changes in version 2.5.1 (????-??-??):
- ** Several portability problems in the test suite have been fixed:
+ ** Future changes:
- This includes warnings with some compilers, unexpected behavior of
- tools such as diff, warning messages from the test suite itself,
- etc.
+ The next major release will drop support for K&R C.
- __attribute__ is not longer disabled when __STRICT_ANSI__ is defined
- (i.e., when -std is passed to GCC).
+ ** yacc.c: YYBACKUP works as expected.
- ** Warnings during the build procedure have been eliminated.
+ ** glr.c improvements:
- ** Many minor improvements have been made to the manual:
+ *** Location support is eliminated when not requested:
- The layout for grammar has changed to a more compact scheme. Named
- references are motivated. The description of the automaton
- description file is updated.
+ GLR parsers used to include location-related code even when
+ locations were not requested, and therefore not even usable.
- ** YYBACKUP works as expected.
+ *** __attribute__ is preserved:
- ** liby is no longer asking for "rpl_fprintf" on some platforms.
+ __attribute__ is no longer disabled when __STRICT_ANSI__ is defined
+ (i.e., when -std is passed to GCC).
- ** Several Java fixes:
+ ** lalr1.java: several fixes:
The Java parser no longer throws ArrayIndexOutOfBoundsException if
the first token leads to a syntax error. Some minor clean ups.