mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-16 15:53:03 +00:00
Document %define lr.type and lr.default_rules.
* NEWS (2.5): Add an entry.
* src/getargs.c (usage): Mention IELR(1) and canonical LR(1)
besides just LALR(1) and GLR(1).
* doc/bison.texinfo (Introduction): Likewise.
(Language and Grammar): Bison is no longer limited to LALR(1)
restrictions.
(GLR parsing): Say deterministic or LR(1) rather than LALR(1)
when trying to distinguish from GLR. Talk about LR(1) grammars
rather than LALR(1) grammars.
(Decl Summary): In %define api.push_pull entry, say it applies
to deterministic parsers in C rather than LALR(1) parsers in C.
Add lr.default_rules entry.
Add lr.type entry.
(Mystery Conflicts): Bison is no longer limited to LALR(1)
restrictions.
(Generalized LR Parsing): Same changes as for the previous GLR
section.
(Memory Management): Say deterministic rather than LALR(1).
(Understanding): Correct some bison output.
Index discussion of "accepting state".
Say deterministic rather than LALR(1).
(Bison Options): In --yacc entry, say deterministic rather than
LALR(1).
In --report, --graph, and --xml entries, just don't mention
LALR(1).
(C++ Parsers): Say deterministic rather than LALR(1).
(Table of Symbols): Likewise in YYSTACK_USE_ALLOCA entry.
(Glossary): Add Accepting State, Consistent State, Default Rule,
and IELR(1) definitions.
In Generalized LR (GLR) definition, make same changes as in
previous GLR sections.
In LALR(1) definition, say Bison uses LALR(1) by default rather
than implying Bison is limited to LALR(1).
(LocalWords): Add IELR.
(cherry picked from commit 34a6c2d19b)
This commit is contained in:
29
NEWS
29
NEWS
@@ -11,6 +11,35 @@ Bison News
|
||||
|
||||
* Changes in version 2.5 (????-??-??):
|
||||
|
||||
** IELR(1) and Canonical LR(1) Support
|
||||
|
||||
IELR(1) is a minimal LR(1) parser table generation algorithm. That
|
||||
is, given any context-free grammar, IELR(1) generates parser tables
|
||||
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
|
||||
parser states is often an order of magnitude. More importantly,
|
||||
because canonical LR(1)'s extra parser states may contain duplicate
|
||||
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
|
||||
significantly reduce the complexity of developing of a grammar.
|
||||
|
||||
Bison can now generate IELR(1) and canonical LR(1) parser tables in
|
||||
place of its traditional LALR(1) parser tables, which remain the
|
||||
default. You can specify the type of parser tables in the grammar
|
||||
file with these directives:
|
||||
|
||||
%define lr.type "LALR"
|
||||
%define lr.type "IELR"
|
||||
%define lr.type "canonical LR"
|
||||
|
||||
The default rules optimization in the parser tables can also be
|
||||
adjusted using `%define lr.default_rules'. See the documentation for
|
||||
`%define lr.type' and `%define lr.default_rules' in the section `Bison
|
||||
Declaration Summary' in the Bison manual for the details.
|
||||
|
||||
These features are experimental. More user feedback will help to
|
||||
stabilize them.
|
||||
|
||||
** %define can now be invoked via the command line.
|
||||
|
||||
Each of these bison command-line options
|
||||
|
||||
Reference in New Issue
Block a user