mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
maint: formatting changes.
* NEWS: Fix indentation of code snippets. Untabify.
This commit is contained in:
116
NEWS
116
NEWS
@@ -21,22 +21,22 @@ GNU Bison NEWS
|
||||
The generated headers are now guarded, as is already the case for C++
|
||||
parsers (lalr1.cc). For intance, with --defines=foo.h:
|
||||
|
||||
#ifndef YY_FOO_H
|
||||
# define YY_FOO_H
|
||||
...
|
||||
#endif /* !YY_FOO_H */
|
||||
#ifndef YY_FOO_H
|
||||
# define YY_FOO_H
|
||||
...
|
||||
#endif /* !YY_FOO_H */
|
||||
|
||||
*** New declarations
|
||||
|
||||
The generated header now declares yydebug and yyparse. Both honor
|
||||
--name-prefix=bar_, and yield
|
||||
|
||||
int bar_parse (void);
|
||||
int bar_parse (void);
|
||||
|
||||
rather than
|
||||
|
||||
#define yyparse bar_parse
|
||||
int yyparse (void);
|
||||
#define yyparse bar_parse
|
||||
int yyparse (void);
|
||||
|
||||
in order to facilitate the inclusion of several parser headers inside a
|
||||
single compilation unit.
|
||||
@@ -78,10 +78,10 @@ GNU Bison NEWS
|
||||
The header files such as "parser.hh", "location.hh", etc. used a constant
|
||||
name for preprocessor guards, for instance:
|
||||
|
||||
#ifndef BISON_LOCATION_HH
|
||||
# define BISON_LOCATION_HH
|
||||
...
|
||||
#endif // !BISON_LOCATION_HH
|
||||
#ifndef BISON_LOCATION_HH
|
||||
# define BISON_LOCATION_HH
|
||||
...
|
||||
#endif // !BISON_LOCATION_HH
|
||||
|
||||
The inclusion guard is now computed from "PREFIX/FILE-NAME", where lower
|
||||
case characters are converted to upper case, and series of
|
||||
@@ -89,10 +89,10 @@ GNU Bison NEWS
|
||||
|
||||
With "bison -o lang++/parser.cc", "location.hh" would now include:
|
||||
|
||||
#ifndef YY_LANG_LOCATION_HH
|
||||
# define YY_LANG_LOCATION_HH
|
||||
...
|
||||
#endif // !YY_LANG_LOCATION_HH
|
||||
#ifndef YY_LANG_LOCATION_HH
|
||||
# define YY_LANG_LOCATION_HH
|
||||
...
|
||||
#endif // !YY_LANG_LOCATION_HH
|
||||
|
||||
*** C++ locations:
|
||||
|
||||
@@ -323,33 +323,33 @@ GNU Bison NEWS
|
||||
to use it. If, for instance, your location structure has "first"
|
||||
and "last" members, instead of
|
||||
|
||||
# define YYLLOC_DEFAULT(Current, Rhs, N) \
|
||||
do \
|
||||
if (N) \
|
||||
{ \
|
||||
(Current).first = (Rhs)[1].location.first; \
|
||||
(Current).last = (Rhs)[N].location.last; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
(Current).first = (Current).last = (Rhs)[0].location.last; \
|
||||
} \
|
||||
while (false)
|
||||
# define YYLLOC_DEFAULT(Current, Rhs, N) \
|
||||
do \
|
||||
if (N) \
|
||||
{ \
|
||||
(Current).first = (Rhs)[1].location.first; \
|
||||
(Current).last = (Rhs)[N].location.last; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
(Current).first = (Current).last = (Rhs)[0].location.last; \
|
||||
} \
|
||||
while (false)
|
||||
|
||||
use:
|
||||
|
||||
# define YYLLOC_DEFAULT(Current, Rhs, N) \
|
||||
do \
|
||||
if (N) \
|
||||
{ \
|
||||
(Current).first = YYRHSLOC (Rhs, 1).first; \
|
||||
(Current).last = YYRHSLOC (Rhs, N).last; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
(Current).first = (Current).last = YYRHSLOC (Rhs, 0).last; \
|
||||
} \
|
||||
while (false)
|
||||
# define YYLLOC_DEFAULT(Current, Rhs, N) \
|
||||
do \
|
||||
if (N) \
|
||||
{ \
|
||||
(Current).first = YYRHSLOC (Rhs, 1).first; \
|
||||
(Current).last = YYRHSLOC (Rhs, N).last; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
(Current).first = (Current).last = YYRHSLOC (Rhs, 0).last; \
|
||||
} \
|
||||
while (false)
|
||||
|
||||
** YYLLOC_DEFAULT in C++:
|
||||
|
||||
@@ -968,26 +968,26 @@ GNU Bison NEWS
|
||||
if the symbols have destructors. For instance:
|
||||
|
||||
exp: exp "?" exp ":" exp { $1 ? $1 : $3; }
|
||||
| exp "+" exp
|
||||
;
|
||||
| exp "+" exp
|
||||
;
|
||||
|
||||
will trigger a warning about $$ and $5 in the first rule, and $3 in
|
||||
the second ($1 is copied to $$ by the default rule). This example
|
||||
most likely contains three errors, and could be rewritten as:
|
||||
|
||||
exp: exp "?" exp ":" exp
|
||||
{ $$ = $1 ? $3 : $5; free ($1 ? $5 : $3); free ($1); }
|
||||
| exp "+" exp
|
||||
{ $$ = $1 ? $1 : $3; if ($1) free ($3); }
|
||||
;
|
||||
{ $$ = $1 ? $3 : $5; free ($1 ? $5 : $3); free ($1); }
|
||||
| exp "+" exp
|
||||
{ $$ = $1 ? $1 : $3; if ($1) free ($3); }
|
||||
;
|
||||
|
||||
However, if the original actions were really intended, memory leaks
|
||||
and all, the warnings can be suppressed by letting Bison believe the
|
||||
values are used, e.g.:
|
||||
|
||||
exp: exp "?" exp ":" exp { $1 ? $1 : $3; (void) ($$, $5); }
|
||||
| exp "+" exp { $$ = $1; (void) $3; }
|
||||
;
|
||||
| exp "+" exp { $$ = $1; (void) $3; }
|
||||
;
|
||||
|
||||
If there are mid-rule actions, the warning is issued if no action
|
||||
uses it. The following triggers no warning: $1 and $3 are used.
|
||||
@@ -1231,16 +1231,16 @@ GNU Bison NEWS
|
||||
In agreement with POSIX and with other Yaccs, leaving a default
|
||||
action is valid when $$ is untyped, and $1 typed:
|
||||
|
||||
untyped: ... typed;
|
||||
untyped: ... typed;
|
||||
|
||||
but the converse remains an error:
|
||||
|
||||
typed: ... untyped;
|
||||
typed: ... untyped;
|
||||
|
||||
** Values of mid-rule actions
|
||||
The following code:
|
||||
|
||||
foo: { ... } { $$ = $1; } ...
|
||||
foo: { ... } { $$ = $1; } ...
|
||||
|
||||
was incorrectly rejected: $1 is defined in the second mid-rule
|
||||
action, and is equal to the $$ of the first mid-rule action.
|
||||
@@ -1322,9 +1322,9 @@ GNU Bison NEWS
|
||||
** Incorrect "Token not used"
|
||||
On a grammar such as
|
||||
|
||||
%token useless useful
|
||||
%%
|
||||
exp: '0' %prec useful;
|
||||
%token useless useful
|
||||
%%
|
||||
exp: '0' %prec useful;
|
||||
|
||||
where a token was used to set the precedence of the last rule,
|
||||
bison reported both "useful" and "useless" as useless tokens.
|
||||
@@ -1343,9 +1343,9 @@ GNU Bison NEWS
|
||||
the user symbol is used in the reports, the graphs, and the verbose
|
||||
error messages instead of "$end", which remains being the default.
|
||||
For instance
|
||||
%token MYEOF 0
|
||||
%token MYEOF 0
|
||||
or
|
||||
%token MYEOF 0 "end of file"
|
||||
%token MYEOF 0 "end of file"
|
||||
|
||||
** Semantic parser
|
||||
This old option, which has been broken for ages, is removed.
|
||||
@@ -1381,9 +1381,9 @@ GNU Bison NEWS
|
||||
Previous versions don't complain when there is a type clash on
|
||||
the default action if the rule has a mid-rule action, such as in:
|
||||
|
||||
%type <foo> bar
|
||||
%%
|
||||
bar: '0' {} '0';
|
||||
%type <foo> bar
|
||||
%%
|
||||
bar: '0' {} '0';
|
||||
|
||||
This is fixed.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user