** WARNING: Future backward-incompatibilities!
- Bison will stop adding a semicolon at the end of the actions (as announced
- in the release 2.5):
-
- foo.y:2.22: warning: a ';' might be needed at the end of action code
- exp: "num" { $$ = $1 }
- ^
- foo.y:2.22: future versions of Bison will not add the ';'
-
Like other GNU packages, Bison will start using some of the C99 features
for its own code, especially the definition of variables after statements.
The generated C parsers still aim at C90.
Support for YYLEX_PARAM and YYPARSE_PARAM is removed (deprecated in Bison
1.875): use %lex-param, %parse-param, or %param.
+ Missing semicolons at the end of actions are no longer added (as announced
+ in the release 2.5).
+
** Bug fixes
*** The epilogue is no longer affected by internal #defines (glr.c)
int yylex (YYSTYPE *yylval);
- This is has been fixed: yylval, yynerrs, yychar, and yylloc are now valid
+ This is fixed: yylval, yynerrs, yychar, and yylloc are now valid
identifiers for user-provided variables.
*** stdio.h is no longer needed when locations are enabled (yacc.c)
bar.y: error: shift/reduce conflicts: 1 found, 0 expected
bar.y: error: reduce/reduce conflicts: 2 found, 0 expected
+** Incompatibilities with POSIX Yacc
+
+ The 'yacc' category is no longer part of '-Wall', enable it explicitly
+ with '-Wyacc'.
+
** Additional yylex/yyparse arguments
The new directive %param declares additional arguments to both yylex and
It used to be an error only if used in non GLR mode, _and_ if there are
reduce/reduce conflicts.
-** Token numbering has changed to preserve the user-defined order
+** Tokens are numbered in their order of appearance
+
+ Contributed by Valentin Tolmer.
+
+ With '%token A B', A had a number less than the one of B. However,
+ precedence declarations used to generate a reversed order. This is now
+ fixed, and introducing tokens with any of %token, %left, %right,
+ %precedence, or %nonassoc yields the same result.
+
+ When mixing declarations of tokens with a litteral character (e.g., 'a')
+ or with an identifier (e.g., B) in a precedence declaration, Bison
+ numbered the litteral characters first. For example
+
+ %right A B 'c' 'd'
+
+ would lead to the tokens declared in this order: 'c' 'd' A B. Again, the
+ input order is now preserved.
- When declaring %token A B, the numbering for A is inferior to B. Up to now,
- when declaring associativity at the same time, with %left (or %right,
- %precedence, %nonassoc), B was inferior to A.
+ These changes were made so that one can remove useless precedence and
+ associativity declarations (i.e., map %nonassoc, %left or %right to
+ %precedence, or to %token) and get exactly the same output.
** Useless precedence and associativity
Contributed by Valentin Tolmer.
- When developping and maintaining a grammar, useless associativity and
+ When developing and maintaining a grammar, useless associativity and
precedence directives are common. They can be a nuisance: new ambiguities
arising are sometimes masked because their conflicts are resolved due to
the extra precedence or associativity information. Furthermore, it can
%left '*'
%%
exp:
- "num"
- | exp '+' "num"
+ "number"
+ | exp '+' "number"
| exp '*' exp
;
%precedence '='
%%
- exp: "var" '=' "num";
+ exp: "var" '=' "number";
will produce a
%nonassoc '='
%%
- exp: "var" '=' "num";
+ exp: "var" '=' "number";
The warning is:
exp: exp '+' exp { $exp = $1 + $3; };
^^^
- The default behaviour for now is still not to display these unless
- explictly asked with -fcaret (or -fall). However, in a later release, it
+ The default behavior for now is still not to display these unless
+ explicitly asked with -fcaret (or -fall). However, in a later release, it
will be made the default behavior (but may still be deactivated with
-fno-caret).
Other issues in the test suite have been addressed.
- Nul characters are correctly displayed in error messages.
+ Null characters are correctly displayed in error messages.
When possible, yylloc is correctly initialized before calling yylex. It
is no longer necessary to initialize it in the %initial-action.
LocalWords: Automake TMPDIR LESSEQ ylwrap endif yydebug YYTOKEN YYLSP ival hh
LocalWords: extern YYTOKENTYPE TOKENTYPE yytokentype tokentype STYPE lval pdf
LocalWords: lang yyoutput dvi html ps POSIX lvalp llocp Wother nterm arg init
- LocalWords: TOK calc yyo fval Wconflicts
+ LocalWords: TOK calc yyo fval Wconflicts parsers yystackp yyval yynerrs
+ LocalWords: Théophile Ranquet Santet fno fnone stype associativity Tolmer
+ LocalWords: Wprecedence Rassoul Wempty Paolo Bonzini parser's Michiel loc
+ LocalWords: redeclaration sval fcaret reentrant XSLT xsl Wmaybe yyvsp Tedi
+ LocalWords: pragmas noreturn untyped Rozenman unexpanded Wojciech Polak
+ LocalWords: Alexandre MERCHANTABILITY
Local Variables:
mode: outline