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 ';'
+ foo.y:2.25: warning: a ';' might be needed at the end of action code
+ exp: "number" { $$ = $1 }
+ ^
+ foo.y:2.25: 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.
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:
%nonassoc '='
^^^
+** Empty rules
+
+ With help from Joel E. Denny and Gabriel Rassoul.
+
+ Empty rules (i.e., with an empty right-hand side) can now be explicitly
+ marked by the new %empty directive. Using %empty on a non-empty rule is
+ an error. The new -Wempty-rule warning reports empty rules without
+ %empty. On the following grammar:
+
+ %%
+ s: a b c;
+ a: ;
+ b: %empty;
+ c: 'a' %empty;
+
+ bison reports:
+
+ 3.4-5: warning: empty rule without %empty [-Wempty-rule]
+ a: {}
+ ^^
+ 5.8-13: error: %empty on non-empty rule
+ c: 'a' %empty {};
+ ^^^^^^
+
** Java skeleton improvements
Contributed by Paolo Bonzini.
;
list:
- /* nothing */ { /* Generates an empty string list */ }
+ %empty { /* Generates an empty string list. */ }
| list item ";" { std::swap ($$, $1); $$.push_back ($2); }
;
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