]> git.saurik.com Git - bison.git/commitdiff
* src/lalr.h (reduction_table, shift_table): Removed arrays, which
authorAkim Demaille <akim@epita.fr>
Mon, 19 Nov 2001 10:07:44 +0000 (10:07 +0000)
committerAkim Demaille <akim@epita.fr>
Mon, 19 Nov 2001 10:07:44 +0000 (10:07 +0000)
contents is now members of...
(state_t): this structure.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
Adjust.

ChangeLog
src/conflicts.c
src/lalr.c
src/lalr.h
src/output.c
src/print.c
src/print_graph.c

index 7ca1de7ea309921e33315d04ccb7e5638f0a7bf2..09d1b416180cb19688b96f352a58e261974dedb0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2001-11-19  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.h (reduction_table, shift_table): Removed arrays, which
+       contents is now members of...
+       (state_t): this structure.
+       * src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
+       Adjust.
+
+       
 2001-11-19  Akim Demaille  <akim@epita.fr>
 
        * src/lalr.h (state_t): New.
index b05fd3cc15d975c5ab5e325838f9f0522f3f90d0..2f213850987ef20341f1b8db0464a7b6731a3c9c 100644 (file)
@@ -60,7 +60,7 @@ flush_shift (int state, int token)
   shifts *shiftp;
   int k, i;
 
-  shiftp = shift_table[state];
+  shiftp = state_table[state].shift_table;
 
   if (shiftp)
     {
@@ -197,7 +197,7 @@ set_conflicts (int state)
   for (i = 0; i < tokensetsize; i++)
     lookaheadset[i] = 0;
 
-  shiftp = shift_table[state];
+  shiftp = state_table[state].shift_table;
   if (shiftp)
     {
       k = shiftp->nshifts;
@@ -288,7 +288,7 @@ count_sr_conflicts (int state)
 
   int src_count = 0;
 
-  shiftp = shift_table[state];
+  shiftp = state_table[state].shift_table;
   if (!shiftp)
     return 0;
 
@@ -533,7 +533,7 @@ print_reductions (FILE *out, int state)
   for (i = 0; i < tokensetsize; i++)
     shiftset[i] = 0;
 
-  shiftp = shift_table[state];
+  shiftp = state_table[state].shift_table;
   if (shiftp)
     {
       k = shiftp->nshifts;
index 4b11caaa7d124ecaeccee297da91031368ddb26f..27e04be455c4bd7752f7bb77fec16dcd2b70f3f5 100644 (file)
@@ -43,8 +43,6 @@ short *LAruleno;
 unsigned *LA;
 
 char *consistent;
-shifts **shift_table;
-reductions **reduction_table;
 short *goto_map;
 short *from_state;
 short *to_state;
@@ -148,39 +146,28 @@ digraph (short **relation)
 static void
 set_state_table (void)
 {
-  core *sp;
-
   state_table = XCALLOC (state_t, nstates);
 
-  for (sp = first_state; sp; sp = sp->next)
-    {
-      state_table[sp->number].state = sp;
-      state_table[sp->number].accessing_symbol = sp->accessing_symbol;
-    }
-}
-
-
-static void
-set_shift_table (void)
-{
-  shifts *sp;
-
-  shift_table = XCALLOC (shifts *, nstates);
-
-  for (sp = first_shift; sp; sp = sp->next)
-    shift_table[sp->number] = sp;
-}
-
-
-static void
-set_reduction_table (void)
-{
-  reductions *rp;
-
-  reduction_table = XCALLOC (reductions *, nstates);
-
-  for (rp = first_reduction; rp; rp = rp->next)
-    reduction_table[rp->number] = rp;
+  {
+    core *sp;
+    for (sp = first_state; sp; sp = sp->next)
+      {
+       state_table[sp->number].state = sp;
+       state_table[sp->number].accessing_symbol = sp->accessing_symbol;
+      }
+  }
+
+  {
+    shifts *sp;
+    for (sp = first_shift; sp; sp = sp->next)
+      state_table[sp->number].shift_table = sp;
+  }
+
+  {
+    reductions *rp;
+    for (rp = first_reduction; rp; rp = rp->next)
+      state_table[rp->number].reduction_table = rp;
+  }
 }
 
 
@@ -231,8 +218,8 @@ initialize_LA (void)
 
       lookaheads[i] = count;
 
-      rp = reduction_table[i];
-      sp = shift_table[i];
+      rp = state_table[i].reduction_table;
+      sp = state_table[i].shift_table;
       if (rp
          && (rp->nreds > 1
              || (sp && !ISVAR (state_table[sp->shifts[0]].accessing_symbol))))
@@ -270,7 +257,7 @@ initialize_LA (void)
     {
       if (!consistent[i])
        {
-         if ((rp = reduction_table[i]))
+         if ((rp = state_table[i].reduction_table))
            for (j = 0; j < rp->nreds; j++)
              *np++ = rp->rules[j];
        }
@@ -408,7 +395,7 @@ initialize_F (void)
   for (i = 0; i < ngotos; i++)
     {
       stateno = to_state[i];
-      sp = shift_table[stateno];
+      sp = state_table[stateno].shift_table;
 
       if (sp)
        {
@@ -580,7 +567,7 @@ build_relations (void)
          for (rp = ritem + rrhs[*rulep]; *rp > 0; rp++)
            {
              symbol2 = *rp;
-             sp = shift_table[stateno];
+             sp = state_table[stateno].shift_table;
              k = sp->nshifts;
 
              for (j = 0; j < k; j++)
@@ -704,8 +691,6 @@ lalr (void)
   tokensetsize = WORDSIZE (ntokens);
 
   set_state_table ();
-  set_shift_table ();
-  set_reduction_table ();
   set_maxrhs ();
   initialize_LA ();
   set_goto_map ();
index c803edd2196d64cdd7f79b4b8a53a28864c58513..c3d719fd29873af917c9574f081051f7da4e66f0 100644 (file)
@@ -82,6 +82,9 @@ typedef struct state_s
 
   /* Its accessing symbol. */
   short accessing_symbol;
+
+  shifts *shift_table;
+  reductions *reduction_table;
 } state_t;
 
 /* All the decorated states, indexed by the state number.  Warning:
@@ -91,8 +94,7 @@ extern state_t *state_table;
 
 extern int tokensetsize;
 extern short *lookaheads;
-extern shifts **shift_table;
-extern reductions **reduction_table;
+
 
 
 
index ff8b72c0409a1b44efd965c0aca8c2f77e6096c9..4c86b22ecacfa8d5a27ead7885e01e50f2990595 100644 (file)
@@ -338,7 +338,7 @@ action_row (int state)
 
   default_rule = 0;
   nreds = 0;
-  redp = reduction_table[state];
+  redp = state_table[state].reduction_table;
 
   if (redp)
     {
@@ -377,7 +377,7 @@ action_row (int state)
        }
     }
 
-  shiftp = shift_table[state];
+  shiftp = state_table[state].shift_table;
 
   /* Now see which tokens are allowed for shifts in this state.  For
      them, record the shift as the thing to do.  So shift is preferred
@@ -552,8 +552,6 @@ free_shifts (void)
 {
   shifts *sp, *sptmp;  /* JF derefrenced freed ptr */
 
-  XFREE (shift_table);
-
   for (sp = first_shift; sp; sp = sptmp)
     {
       sptmp = sp->next;
@@ -567,8 +565,6 @@ free_reductions (void)
 {
   reductions *rp, *rptmp;      /* JF fixed freed ptr */
 
-  XFREE (reduction_table);
-
   for (rp = first_reduction; rp; rp = rptmp)
     {
       rptmp = rp->next;
index a52d660a0c37639ea26730fce7417f78a99aec93..cbc0ceb2db7751ee30cbd4015df9a88cfedea065 100644 (file)
@@ -102,8 +102,8 @@ print_actions (FILE *out, int state)
   reductions *redp;
   int rule;
 
-  shiftp = shift_table[state];
-  redp = reduction_table[state];
+  shiftp = state_table[state].shift_table;
+  redp = state_table[state].reduction_table;
   errp = err_table[state];
 
   if (!shiftp && !redp)
index a99af9c9d9f9f513f960a87278f3322f65474ea9..55eb702c4726cc148f6ce6010e23c44fa947a563 100644 (file)
@@ -104,8 +104,8 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
   static char buff[10];
   edge_t edge;
 
-  shiftp = shift_table[state];
-  redp = reduction_table[state];
+  shiftp = state_table[state].shift_table;
+  redp = state_table[state].reduction_table;
   errp = err_table[state];
 
   if (!shiftp && !redp)