2010-01-04 Joel E. Denny <jdenny@clemson.edu>
+ Fix some comments concerning LR(0) versus LALR(1).
+
+ Stop equating LR(0) with nondeterminism and LALR(1) with
+ determinism. That is, if all states are consistent, then LR(0)
+ tables are deterministic. On the other hand, LALR(1) tables
+ might be nondeterministic before conflict resolution, and GLR
+ permits LALR(1) tables to remain nondeterministic.
+ * src/LR0.c, src/LR0.h: Here.
+ * src/lalr.c, src/lalr.h: Here.
+ * src/main.c (main): Here.
+ * src/state.c, src/state.h: Here.
+
+ * src/ielr.h (ielr): In preconditions, expect LR(0) not LALR(1)
+ parser tables.
+
+2010-01-04 Joel E. Denny <jdenny@clemson.edu>
+
maint: run "make update-copyright"
2009-12-30 Joel E. Denny <jdenny@clemson.edu>
-/* Generate the nondeterministic finite state machine for Bison.
+/* Generate the LR(0) parser states for Bison.
Copyright (C) 1984, 1986, 1989, 2000-2002, 2004-2007, 2009-2010 Free
Software Foundation, Inc.
/*-------------------------------------------------------------------.
-| Compute the nondeterministic finite state machine (see state.h for |
-| details) from the grammar. |
+| Compute the LR(0) parser states (see state.h for details) from the |
+| grammar. |
`-------------------------------------------------------------------*/
void
-/* Generate the nondeterministic finite state machine for bison,
+/* Generate the LR(0) parser states for Bison.
+
Copyright (C) 1984, 1986, 1989, 2000-2002, 2009-2010 Free Software
Foundation, Inc.
/**
* \pre
- * - \c ::states is of size \c ::nstates and defines an LALR(1) parser for
- * the users's grammar.
+ * - \c ::states is of size \c ::nstates and defines an LR(0) parser
+ * for the users's grammar.
* - \c ::ntokens is the number of tokens in the grammar.
* \post
* - \c ::states is of size \c ::nstates (which might be greater than
along with this program. If not, see <http://www.gnu.org/licenses/>. */
-/* Compute how to make the finite state machine deterministic; find
- which rules need lookahead in each state, and which lookahead
+/* Find which rules need lookahead in each state, and which lookahead
tokens they accept. */
#include <config.h>
/** Build the LALR(1) automaton.
- Compute how to make the finite state machine deterministic; find
- which rules need lookahead in each state, and which lookahead
+ Find which rules need lookahead in each state, and which lookahead
tokens they accept.
Also builds:
nullable_compute ();
timevar_pop (TV_SETS);
- /* Convert to nondeterministic finite state machine. In file LR0.
- See state.h for more info. */
+ /* Compute LR(0) parser states. See state.h for more info. */
timevar_push (TV_LR0);
generate_states ();
timevar_pop (TV_LR0);
- /* Make it deterministic by computing lookahead sets. Except when LALR(1) is
- requested, split states to eliminate LR(1)-relative inadequacies. In file
- lalr and ielr. */
+ /* Add lookahead sets to parser states. Except when LALR(1) is
+ requested, split states to eliminate LR(1)-relative
+ inadequacies. */
ielr ();
/* Find and record any conflicts: places where one token of
-/* Type definitions for nondeterministic finite state machine for Bison.
+/* Type definitions for the finite state machine for Bison.
Copyright (C) 2001-2007, 2009-2010 Free Software Foundation, Inc.
-/* Type definitions for nondeterministic finite state machine for Bison.
+/* Type definitions for the finite state machine for Bison.
Copyright (C) 1984, 1989, 2000-2004, 2007, 2009-2010 Free Software
Foundation, Inc.