]> git.saurik.com Git - bison.git/commitdiff
Now that states have a complete set of members, the linked list of
authorAkim Demaille <akim@epita.fr>
Mon, 10 Dec 2001 09:06:48 +0000 (09:06 +0000)
committerAkim Demaille <akim@epita.fr>
Mon, 10 Dec 2001 09:06:48 +0000 (09:06 +0000)
reductions is useless: just fill directly the state's reductions
member.
* src/state.h (struct reductions): Remove member `number' and
`next'.
* src/LR0.c (first_reduction, last_reduction): Remove.
(save_reductions): Don't link the new reductions, store them in
this_state.
* src/lalr.c (set_state_table): No need to attach reductions to
states, it's already done.
* src/output.c (output_actions): No longer free the shifts, then
the reductions, then the states: free all the states and their
members.

ChangeLog
src/LR0.c
src/lalr.c
src/output.c
src/state.h

index e394f3491e21a00f3aba4678a26cb317448f2e18..d47c6480098b87963a847ebcfd43a1d2fea970ef 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2001-12-10  Akim Demaille  <akim@epita.fr>
+
+       Now that states have a complete set of members, the linked list of
+       reductions is useless: just fill directly the state's reductions
+       member.
+
+       * src/state.h (struct reductions): Remove member `number' and
+       `next'.
+       * src/LR0.c (first_reduction, last_reduction): Remove.
+       (save_reductions): Don't link the new reductions, store them in
+       this_state.
+       * src/lalr.c (set_state_table): No need to attach reductions to
+       states, it's already done.
+       * src/output.c (output_actions): No longer free the shifts, then
+       the reductions, then the states: free all the states and their
+       members.
+
+       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/options.c (OPTN, DRTV, BOTH): New.
index ff5fdb614123433ca3ccae7a386304b3fac067cd..2dbd91e453e5d1bf5f495f558167ac79e26b8f9f 100644 (file)
--- a/src/LR0.c
+++ b/src/LR0.c
 #include "complain.h"
 #include "closure.h"
 #include "LR0.h"
+#include "lalr.h"
 #include "reduce.h"
 
 int nstates;
 int final_state;
 state_t *first_state = NULL;
 shifts *first_shift = NULL;
-reductions *first_reduction = NULL;
 
 static state_t *this_state = NULL;
 static state_t *last_state = NULL;
 static shifts *last_shift = NULL;
-static reductions *last_reduction = NULL;
 
 static int nshifts;
 static short *shift_symbol = NULL;
@@ -551,17 +550,10 @@ save_reductions (void)
   if (count)
     {
       reductions *p = REDUCTIONS_ALLOC (count);
-
-      p->number = this_state->number;
       p->nreds = count;
-
       shortcpy (p->rules, redset, count);
 
-      if (last_reduction)
-       last_reduction->next = p;
-      else
-       first_reduction = p;
-      last_reduction = p;
+      this_state->reductions = p;
     }
 }
 
index 0b26925580c370a826d098425ee17b26fff61a76..c7807f5e97fbad81518231129f6f906856705e4b 100644 (file)
@@ -156,12 +156,6 @@ set_state_table (void)
       state_table[sp->number]->shifts = sp;
   }
 
-  {
-    reductions *rp;
-    for (rp = first_reduction; rp; rp = rp->next)
-      state_table[rp->number]->reductions = rp;
-  }
-
   /* Pessimization, but simplification of the code: make sure all the
      states have a shifts, even if reduced to 0 shifts.  */
   {
index dbcfbf0119924a480af72a8880bde8d765f84c92..cf5c05939acaeefa44055d980cd4a4d43f8f71fd 100644 (file)
@@ -885,6 +885,7 @@ output_check (void)
 static void
 output_actions (void)
 {
+  int i;
   nvectors = nstates + nvars;
 
   froms = XCALLOC (short *, nvectors);
@@ -893,8 +894,6 @@ output_actions (void)
   width = XCALLOC (short, nvectors);
 
   token_actions ();
-  LIST_FREE (shifts, first_shift);
-  LIST_FREE (reductions, first_reduction);
   XFREE (LA);
   XFREE (LAruleno);
 
@@ -910,7 +909,14 @@ output_actions (void)
   output_table ();
 
   output_check ();
-  LIST_FREE (state_t, first_state);
+
+  for (i = 0; i < nstates; ++i)
+    {
+      XFREE (state_table[i]->shifts);
+      XFREE (state_table[i]->reductions);
+      XFREE (state_table[i]->errs);
+      free (state_table[i]);
+    }
   XFREE (state_table);
 }
 
index b407e8865124495f72b5e48ce46d3051e857425e..d505565ac8d83c72131b11f923c5c97c484b6b3f 100644 (file)
@@ -162,8 +162,6 @@ typedef struct errs
 
 typedef struct reductions
 {
-  struct reductions *next;
-  short number;
   short nreds;
   short rules[1];
 } reductions;