]> git.saurik.com Git - bison.git/commitdiff
Fix some comments concerning LR(0) versus LALR(1).
authorJoel E. Denny <jdenny@clemson.edu>
Mon, 4 Jan 2010 19:13:43 +0000 (14:13 -0500)
committerJoel E. Denny <jdenny@clemson.edu>
Mon, 4 Jan 2010 19:13:43 +0000 (14:13 -0500)
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.

ChangeLog
src/LR0.c
src/LR0.h
src/ielr.h
src/lalr.c
src/lalr.h
src/main.c
src/state.c
src/state.h

index 1743e1851e7ee24b1b1859a7d64f0e27b4b000e5..885a57401f9d1c79083a1e679870e389cbc4886c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+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"
 2010-01-04  Joel E. Denny  <jdenny@clemson.edu>
 
        maint: run "make update-copyright"
index fa563242ef676381b7b00fbdf76574a2f7201f68..2628027ebab9ac184620e9dea8454a10502a4b52 100644 (file)
--- a/src/LR0.c
+++ b/src/LR0.c
@@ -1,4 +1,4 @@
-/* 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.
 
    Copyright (C) 1984, 1986, 1989, 2000-2002, 2004-2007, 2009-2010 Free
    Software Foundation, Inc.
@@ -329,8 +329,8 @@ set_states (void)
 
 
 /*-------------------------------------------------------------------.
 
 
 /*-------------------------------------------------------------------.
-| 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
 `-------------------------------------------------------------------*/
 
 void
index 4418871347eefb7f92a05434340d21c12bc22612..2f4aff1225b386fe4f0de33a736fa07bc08280af 100644 (file)
--- a/src/LR0.h
+++ b/src/LR0.h
@@ -1,4 +1,5 @@
-/* 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.
 
    Copyright (C) 1984, 1986, 1989, 2000-2002, 2009-2010 Free Software
    Foundation, Inc.
 
index 2dc5defbac02c088c79673e139994ac2936964c6..668b67e95670e378ff5901b0f1fcdae1059dc6b9 100644 (file)
@@ -26,8 +26,8 @@
 
 /**
  * \pre
 
 /**
  * \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
  *   - \c ::ntokens is the number of tokens in the grammar.
  * \post
  *   - \c ::states is of size \c ::nstates (which might be greater than
index 5944a483b93d55d31abed88c47fec37b2f1e3df7..6f099a8b0e5d619d7235a51e0fbc7989ec927042 100644 (file)
@@ -19,8 +19,7 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 
    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>
    tokens they accept.  */
 
 #include <config.h>
index 5cd777504b1e8a90d569bf79b9f868f3da30281d..88ff7b4119baa3a15eb93a36a09f2edfc74c7c07 100644 (file)
@@ -33,8 +33,7 @@
 
 /** Build the LALR(1) automaton.
 
 
 /** 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:
    tokens they accept.
 
    Also builds:
index 05470d7998e49f7c2469e91ea776453286cc92a6..5c852ac0fb1dd815da3858ef9a63a3ea61114c58 100644 (file)
@@ -97,15 +97,14 @@ main (int argc, char *argv[])
   nullable_compute ();
   timevar_pop (TV_SETS);
 
   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);
 
   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
   ielr ();
 
   /* Find and record any conflicts: places where one token of
index aa80ebcd578de6c861f7d31140888ac6eb491935..dd253798034266140934ceeaa933a73560bf5662 100644 (file)
@@ -1,4 +1,4 @@
-/* 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.
 
 
    Copyright (C) 2001-2007, 2009-2010 Free Software Foundation, Inc.
 
index 99e09c447d989060c426ac0ed88c626829cd24c2..a1ed9934db8c761c98cbf49821fea96cf1ef0002 100644 (file)
@@ -1,4 +1,4 @@
-/* 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.
 
    Copyright (C) 1984, 1989, 2000-2004, 2007, 2009-2010 Free Software
    Foundation, Inc.