mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 04:13:03 +00:00
doc: cleanup.
* NEWS (2.5): Make some minor improvements to wording, and format entries more consistently. * doc/bison.texinfo (Language and Grammar): Point out that IELR and canonical LR are experimental features. (Decl Summary): In list of %define variables, make wording more consistent. Improve discussion of using LALR for GLR.
This commit is contained in:
10
ChangeLog
10
ChangeLog
@@ -1,3 +1,13 @@
|
|||||||
|
2010-12-19 Joel E. Denny <jdenny@clemson.edu>
|
||||||
|
|
||||||
|
doc: cleanup.
|
||||||
|
* NEWS (2.5): Make some minor improvements to wording, and format
|
||||||
|
entries more consistently.
|
||||||
|
* doc/bison.texinfo (Language and Grammar): Point out that IELR
|
||||||
|
and canonical LR are experimental features.
|
||||||
|
(Decl Summary): In list of %define variables, make wording more
|
||||||
|
consistent. Improve discussion of using LALR for GLR.
|
||||||
|
|
||||||
2010-12-19 Joel E. Denny <jdenny@clemson.edu>
|
2010-12-19 Joel E. Denny <jdenny@clemson.edu>
|
||||||
|
|
||||||
parse.lac: document.
|
parse.lac: document.
|
||||||
|
|||||||
44
NEWS
44
NEWS
@@ -62,7 +62,7 @@ Bison News
|
|||||||
|
|
||||||
* Changes in version 2.5 (????-??-??):
|
* Changes in version 2.5 (????-??-??):
|
||||||
|
|
||||||
** Named References Support
|
** Named references:
|
||||||
|
|
||||||
Historically, Yacc and Bison have supported positional references
|
Historically, Yacc and Bison have supported positional references
|
||||||
($n, $$) to allow access to symbol values from inside of semantic
|
($n, $$) to allow access to symbol values from inside of semantic
|
||||||
@@ -87,13 +87,13 @@ Bison News
|
|||||||
These features are experimental in this version. More user feedback
|
These features are experimental in this version. More user feedback
|
||||||
will help to stabilize them.
|
will help to stabilize them.
|
||||||
|
|
||||||
** IELR(1) and Canonical LR(1) Support
|
** IELR(1) and canonical LR(1):
|
||||||
|
|
||||||
IELR(1) is a minimal LR(1) parser table generation algorithm. That
|
IELR(1) is a minimal LR(1) parser table generation algorithm. That
|
||||||
is, given any context-free grammar, IELR(1) generates parser tables
|
is, given any context-free grammar, IELR(1) generates parser tables
|
||||||
with the full language recognition power of canonical LR(1) but with
|
with the full language recognition power of canonical LR(1) but with
|
||||||
nearly the same number of parser states as LALR(1). This reduction in
|
nearly the same number of parser states as LALR(1). This reduction
|
||||||
parser states is often an order of magnitude. More importantly,
|
in parser states is often an order of magnitude. More importantly,
|
||||||
because canonical LR(1)'s extra parser states may contain duplicate
|
because canonical LR(1)'s extra parser states may contain duplicate
|
||||||
conflicts in the case of non-LR(1) grammars, the number of conflicts
|
conflicts in the case of non-LR(1) grammars, the number of conflicts
|
||||||
for IELR(1) is often an order of magnitude less as well. This can
|
for IELR(1) is often an order of magnitude less as well. This can
|
||||||
@@ -157,15 +157,15 @@ Bison News
|
|||||||
LAC is an experimental feature. More user feedback will help to
|
LAC is an experimental feature. More user feedback will help to
|
||||||
stabilize it.
|
stabilize it.
|
||||||
|
|
||||||
** Unrecognized %code qualifiers are now an error not a warning.
|
** Unrecognized %code qualifiers are now errors not warnings.
|
||||||
|
|
||||||
** %define improvements.
|
** %define improvements:
|
||||||
|
|
||||||
*** Unrecognized variables are now an error not a warning.
|
*** Unrecognized variables are now errors not warnings.
|
||||||
|
|
||||||
*** Multiple invocations for any variable is now an error not a warning.
|
*** Multiple invocations for any variable is now an error not a warning.
|
||||||
|
|
||||||
*** Can now be invoked via the command line.
|
*** Can now be invoked via the command line:
|
||||||
|
|
||||||
Each of these command-line options
|
Each of these command-line options
|
||||||
|
|
||||||
@@ -184,7 +184,7 @@ Bison News
|
|||||||
quietly override %define, but -D and --define do not. For further
|
quietly override %define, but -D and --define do not. For further
|
||||||
details, see the section "Bison Options" in the Bison manual.
|
details, see the section "Bison Options" in the Bison manual.
|
||||||
|
|
||||||
*** Variables renamed.
|
*** Variables renamed:
|
||||||
|
|
||||||
The following %define variables
|
The following %define variables
|
||||||
|
|
||||||
@@ -199,7 +199,7 @@ Bison News
|
|||||||
The old names are now deprecated but will be maintained indefinitely
|
The old names are now deprecated but will be maintained indefinitely
|
||||||
for backward compatibility.
|
for backward compatibility.
|
||||||
|
|
||||||
*** Values no longer need to be quoted in grammar file.
|
*** Values no longer need to be quoted in grammar file:
|
||||||
|
|
||||||
If a %define value is an identifier, it no longer needs to be placed
|
If a %define value is an identifier, it no longer needs to be placed
|
||||||
within quotations marks. For example,
|
within quotations marks. For example,
|
||||||
@@ -210,15 +210,15 @@ Bison News
|
|||||||
|
|
||||||
%define api.push-pull push
|
%define api.push-pull push
|
||||||
|
|
||||||
** Symbol names.
|
** Grammar symbol names can now contain dashes:
|
||||||
|
|
||||||
Consistently with directives (such as %error-verbose) and variables
|
Consistently with directives (such as %error-verbose) and variables
|
||||||
(e.g. push-pull), symbol names may include dashes in any position,
|
(e.g. push-pull), grammar symbol names may include dashes in any
|
||||||
similarly to periods and underscores. This is GNU extension over
|
position, similarly to periods and underscores. This is GNU
|
||||||
POSIX Yacc whose use is reported by -Wyacc, and rejected in Yacc
|
extension over POSIX Yacc whose use is reported by -Wyacc, and
|
||||||
mode (--yacc).
|
rejected in Yacc mode (--yacc).
|
||||||
|
|
||||||
** YYFAIL now produces warnings and Java parsers no longer implement it.
|
** YYFAIL now produces warnings and Java parsers no longer implement it:
|
||||||
|
|
||||||
YYFAIL has existed for many years as an undocumented feature of
|
YYFAIL has existed for many years as an undocumented feature of
|
||||||
deterministic parsers in C generated by Bison. More recently, it was
|
deterministic parsers in C generated by Bison. More recently, it was
|
||||||
@@ -229,7 +229,7 @@ Bison News
|
|||||||
discussion of how to suppress C preprocessor warnings about YYFAIL
|
discussion of how to suppress C preprocessor warnings about YYFAIL
|
||||||
being unused, see the Bison 2.4.2 NEWS entry.
|
being unused, see the Bison 2.4.2 NEWS entry.
|
||||||
|
|
||||||
** Temporary hack for adding a semicolon to the user action.
|
** Temporary hack for adding a semicolon to the user action:
|
||||||
|
|
||||||
Previously, Bison appended a semicolon to every user action for
|
Previously, Bison appended a semicolon to every user action for
|
||||||
reductions when the output language defaulted to C (specifically, when
|
reductions when the output language defaulted to C (specifically, when
|
||||||
@@ -250,7 +250,7 @@ Bison News
|
|||||||
about a missing semicolon where it did not before. Future releases of
|
about a missing semicolon where it did not before. Future releases of
|
||||||
Bison will cease to append semicolons entirely.
|
Bison will cease to append semicolons entirely.
|
||||||
|
|
||||||
** Character literals not of length one.
|
** Character literals not of length one:
|
||||||
|
|
||||||
Previously, Bison quietly converted all character literals to length
|
Previously, Bison quietly converted all character literals to length
|
||||||
one. For example, without warning, Bison interpreted the operators in
|
one. For example, without warning, Bison interpreted the operators in
|
||||||
@@ -261,7 +261,7 @@ Bison News
|
|||||||
;
|
;
|
||||||
|
|
||||||
Bison now warns when a character literal is not of length one. In
|
Bison now warns when a character literal is not of length one. In
|
||||||
some future release, Bison will report an error instead.
|
some future release, Bison will start reporting an error instead.
|
||||||
|
|
||||||
** Verbose syntax error message fixes:
|
** Verbose syntax error message fixes:
|
||||||
|
|
||||||
@@ -301,14 +301,14 @@ Bison News
|
|||||||
canonical LR. However, LAC is still experimental and is disabled
|
canonical LR. However, LAC is still experimental and is disabled
|
||||||
by default.
|
by default.
|
||||||
|
|
||||||
** Destructor calls fixed for lookaheads altered in semantic actions.
|
** Destructor calls fixed for lookaheads altered in semantic actions:
|
||||||
|
|
||||||
Previously for deterministic parsers in C, if a user semantic action
|
Previously for deterministic parsers in C, if a user semantic action
|
||||||
altered yychar, the parser in some cases used the old yychar value to
|
altered yychar, the parser in some cases used the old yychar value to
|
||||||
determine which destructor to call for the lookahead upon a syntax
|
determine which destructor to call for the lookahead upon a syntax
|
||||||
error or upon parser return. This bug has been fixed.
|
error or upon parser return. This bug has been fixed.
|
||||||
|
|
||||||
** C++ parsers use YYRHSLOC
|
** C++ parsers use YYRHSLOC:
|
||||||
|
|
||||||
Similarly to the C parsers, the C++ parsers now define the YYRHSLOC
|
Similarly to the C parsers, the C++ parsers now define the YYRHSLOC
|
||||||
macro and use it in the default YYLLOC_DEFAULT. You are encouraged
|
macro and use it in the default YYLLOC_DEFAULT. You are encouraged
|
||||||
@@ -343,7 +343,7 @@ Bison News
|
|||||||
} \
|
} \
|
||||||
while (false)
|
while (false)
|
||||||
|
|
||||||
** YYLLOC_DEFAULT in C++
|
** YYLLOC_DEFAULT in C++:
|
||||||
|
|
||||||
The default implementation of YYLLOC_DEFAULT used to be issued in
|
The default implementation of YYLLOC_DEFAULT used to be issued in
|
||||||
the header file. It is now output in the implementation file, after
|
the header file. It is now output in the implementation file, after
|
||||||
|
|||||||
@@ -477,8 +477,8 @@ For historical reasons, Bison by default is limited by the additional
|
|||||||
restrictions of @acronym{LALR}(1), which is hard to explain simply.
|
restrictions of @acronym{LALR}(1), which is hard to explain simply.
|
||||||
@xref{Mystery Conflicts, ,Mysterious Reduce/Reduce Conflicts}, for
|
@xref{Mystery Conflicts, ,Mysterious Reduce/Reduce Conflicts}, for
|
||||||
more information on this.
|
more information on this.
|
||||||
To escape these additional restrictions, you can request
|
As an experimental feature, you can escape these additional restrictions by
|
||||||
@acronym{IELR}(1) or canonical @acronym{LR}(1) parser tables.
|
requesting @acronym{IELR}(1) or canonical @acronym{LR}(1) parser tables.
|
||||||
@xref{Decl Summary,,lr.type}, to learn how.
|
@xref{Decl Summary,,lr.type}, to learn how.
|
||||||
|
|
||||||
@cindex @acronym{GLR} parsing
|
@cindex @acronym{GLR} parsing
|
||||||
@@ -5077,7 +5077,7 @@ Some of the accepted @var{variable}s are:
|
|||||||
@itemize
|
@itemize
|
||||||
@item Languages(s): C++
|
@item Languages(s): C++
|
||||||
|
|
||||||
@item Purpose: Specifies the namespace for the parser class.
|
@item Purpose: Specify the namespace for the parser class.
|
||||||
For example, if you specify:
|
For example, if you specify:
|
||||||
|
|
||||||
@smallexample
|
@smallexample
|
||||||
@@ -5150,7 +5150,7 @@ The parser namespace is @code{foo} and @code{yylex} is referenced as
|
|||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item Language(s): C (deterministic parsers only)
|
@item Language(s): C (deterministic parsers only)
|
||||||
|
|
||||||
@item Purpose: Requests a pull parser, a push parser, or both.
|
@item Purpose: Request a pull parser, a push parser, or both.
|
||||||
@xref{Push Decl, ,A Push Parser}.
|
@xref{Push Decl, ,A Push Parser}.
|
||||||
(The current push parsing interface is experimental and may evolve.
|
(The current push parsing interface is experimental and may evolve.
|
||||||
More user feedback will help to stabilize it.)
|
More user feedback will help to stabilize it.)
|
||||||
@@ -5302,8 +5302,8 @@ That is, it does not perform any extra reductions.
|
|||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item Language(s): all
|
@item Language(s): all
|
||||||
|
|
||||||
@item Purpose: Requests that Bison allow unreachable parser states to remain in
|
@item Purpose: Request that Bison allow unreachable parser states to
|
||||||
the parser tables.
|
remain in the parser tables.
|
||||||
Bison considers a state to be unreachable if there exists no sequence of
|
Bison considers a state to be unreachable if there exists no sequence of
|
||||||
transitions from the start state to that state.
|
transitions from the start state to that state.
|
||||||
A state can become unreachable during conflict resolution if Bison disables a
|
A state can become unreachable during conflict resolution if Bison disables a
|
||||||
@@ -5351,7 +5351,7 @@ However, Bison does not compute which goto actions are useless.
|
|||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item Language(s): all
|
@item Language(s): all
|
||||||
|
|
||||||
@item Purpose: Specifies the type of parser tables within the
|
@item Purpose: Specify the type of parser tables within the
|
||||||
@acronym{LR}(1) family.
|
@acronym{LR}(1) family.
|
||||||
(This feature is experimental.
|
(This feature is experimental.
|
||||||
More user feedback will help to stabilize it.)
|
More user feedback will help to stabilize it.)
|
||||||
@@ -5378,6 +5378,10 @@ In this case, the use of @acronym{LALR} parser tables is guaranteed not
|
|||||||
to alter the language accepted by the parser.
|
to alter the language accepted by the parser.
|
||||||
@acronym{LALR} parser tables are the smallest parser tables Bison can
|
@acronym{LALR} parser tables are the smallest parser tables Bison can
|
||||||
currently generate, so they may be preferable.
|
currently generate, so they may be preferable.
|
||||||
|
Nevertheless, once you begin to resolve conflicts statically,
|
||||||
|
@acronym{GLR} begins to behave more like a deterministic parser, and so
|
||||||
|
@acronym{IELR} and canonical @acronym{LR} can be helpful to avoid
|
||||||
|
@acronym{LALR}'s mysterious behavior.
|
||||||
|
|
||||||
@item Occasionally during development, an especially malformed grammar
|
@item Occasionally during development, an especially malformed grammar
|
||||||
with a major recurring flaw may severely impede the @acronym{IELR} or
|
with a major recurring flaw may severely impede the @acronym{IELR} or
|
||||||
@@ -5590,7 +5594,7 @@ is not already defined, so that the debugging facilities are compiled.
|
|||||||
C++
|
C++
|
||||||
|
|
||||||
@item Purpose:
|
@item Purpose:
|
||||||
Requests variant-based semantic values.
|
Request variant-based semantic values.
|
||||||
@xref{C++ Variants}.
|
@xref{C++ Variants}.
|
||||||
|
|
||||||
@item Accepted Values:
|
@item Accepted Values:
|
||||||
|
|||||||
Reference in New Issue
Block a user