bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

08-fyi-nlookaheads.patch


From: Akim Demaille
Subject: 08-fyi-nlookaheads.patch
Date: Mon, 17 Dec 2001 18:21:11 +0100

Index: ChangeLog
from  Akim Demaille  <address@hidden>
        
        * src/state.h (state_t): Rename lookaheads as lookaheadsp.
        nlookaheads is a new member.
        Adjust all users.
        * src/lalr.h (nlookaheads): Remove this orphan declaration.
        * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
        state.
        
        
Index: src/conflicts.c
--- src/conflicts.c Sun, 16 Dec 2001 17:16:27 +0100 akim
+++ src/conflicts.c Sun, 16 Dec 2001 18:15:40 +0100 akim
@@ -172,8 +172,8 @@
   /* Loop over all rules which require lookahead in this state.  First
      check for shift-reduce conflict, and try to resolve using
      precedence */
-  for (i = state_table[state]->lookaheads;
-       i < state_table[state + 1]->lookaheads;
+  for (i = state_table[state]->lookaheadsp;
+       i < state_table[state + 1]->lookaheadsp;
        ++i)
     if (rule_table[LAruleno[i]].prec)
       for (j = 0; j < tokensetsize; ++j)
@@ -186,8 +186,8 @@
 
   /* Loop over all rules which require lookahead in this state.  Check
      for conflicts not resolved above.  */
-  for (i = state_table[state]->lookaheads;
-       i < state_table[state + 1]->lookaheads;
+  for (i = state_table[state]->lookaheadsp;
+       i < state_table[state + 1]->lookaheadsp;
        ++i)
     {
       for (j = 0; j < tokensetsize; ++j)
@@ -237,8 +237,8 @@
     if (!SHIFT_IS_DISABLED (shiftp, i))
       SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i));
 
-  for (i = state_table[state]->lookaheads;
-       i < state_table[state + 1]->lookaheads;
+  for (i = state_table[state]->lookaheadsp;
+       i < state_table[state + 1]->lookaheadsp;
        ++i)
     for (k = 0; k < tokensetsize; ++k)
       lookaheadset[k] |= LA (i)[k];
@@ -264,8 +264,8 @@
   int i;
   int rrc_count = 0;
 
-  int m = state_table[state]->lookaheads;
-  int n = state_table[state + 1]->lookaheads;
+  int m = state_table[state]->lookaheadsp;
+  int n = state_table[state + 1]->lookaheadsp;
 
   if (n - m < 2)
     return 0;
@@ -414,8 +414,8 @@
 {
   int i;
   int j;
-  int m = state_table[state]->lookaheads;
-  int n = state_table[state + 1]->lookaheads;
+  int m = state_table[state]->lookaheadsp;
+  int n = state_table[state + 1]->lookaheadsp;
   shifts *shiftp = state_table[state]->shifts;
   errs *errp = state_table[state]->errs;
   int nodefault = 0;
Index: src/lalr.c
--- src/lalr.c Sun, 09 Dec 2001 11:48:23 +0100 akim
+++ src/lalr.c Sun, 16 Dec 2001 18:25:34 +0100 akim
@@ -140,7 +140,7 @@
   short *np;
   reductions *rp;
 
-  size_t nLA = state_table[nstates]->lookaheads;
+  size_t nLA = state_table[nstates]->lookaheadsp;
   if (!nLA)
     nLA = 1;
 
@@ -314,8 +314,8 @@
   int found;
   shorts *sp;
 
-  i = state_table[stateno]->lookaheads;
-  k = state_table[stateno + 1]->lookaheads;
+  i = state_table[stateno]->lookaheadsp;
+  k = state_table[stateno + 1]->lookaheadsp;
   found = 0;
   while (!found && i < k)
     {
@@ -516,7 +516,7 @@
   int i;
   shorts *sp;
 
-  for (i = 0; i < state_table[nstates]->lookaheads; i++)
+  for (i = 0; i < state_table[nstates]->lookaheadsp; i++)
     for (sp = lookback[i]; sp; sp = sp->next)
       {
        int size = LA (i + 1) - LA (i);
@@ -526,7 +526,7 @@
       }
 
   /* Free LOOKBACK. */
-  for (i = 0; i < state_table[nstates]->lookaheads; i++)
+  for (i = 0; i < state_table[nstates]->lookaheadsp; i++)
     LIST_FREE (shorts, lookback[i]);
 
   XFREE (lookback);
@@ -546,14 +546,13 @@
   for (i = 0; i < nstates; i++)
     {
       int k;
+      int nlookaheads = 0;
       reductions *rp = state_table[i]->reductions;
       shifts *sp = state_table[i]->shifts;
 
-      state_table[i]->lookaheads = count;
-
       if (rp
          && (rp->nreds > 1 || (sp->nshifts && SHIFT_IS_SHIFT (sp, 0))))
-       count += rp->nreds;
+       nlookaheads += rp->nreds;
       else
        state_table[i]->consistent = 1;
 
@@ -563,11 +562,15 @@
            state_table[i]->consistent = 0;
            break;
          }
+
+      state_table[i]->nlookaheads = nlookaheads;
+      state_table[i]->lookaheadsp = count;
+      count += nlookaheads;
     }
 
   /* Seems to be needed by conflicts.c. */
   state_table[nstates] = STATE_ALLOC (0);
-  state_table[nstates]->lookaheads = count;
+  state_table[nstates]->lookaheadsp = count;
 }
 
 void
Index: src/lalr.h
--- src/lalr.h Sat, 08 Dec 2001 13:33:23 +0100 akim
+++ src/lalr.h Sun, 16 Dec 2001 18:21:26 +0100 akim
@@ -74,6 +74,4 @@
 
 extern int tokensetsize;
 
-/* The number of lookaheads. */
-extern size_t nlookaheads;
 #endif /* !LALR_H_ */
Index: src/output.c
--- src/output.c Sun, 16 Dec 2001 16:51:00 +0100 akim
+++ src/output.c Sun, 16 Dec 2001 18:16:00 +0100 akim
@@ -327,8 +327,8 @@
       int j;
       /* loop over all the rules available here which require
         lookahead */
-      m = state_table[state]->lookaheads;
-      n = state_table[state + 1]->lookaheads;
+      m = state_table[state]->lookaheadsp;
+      n = state_table[state + 1]->lookaheadsp;
 
       for (i = n - 1; i >= m; i--)
        /* and find each token which the rule finds acceptable
Index: src/state.h
--- src/state.h Sat, 08 Dec 2001 22:32:43 +0100 akim
+++ src/state.h Sun, 16 Dec 2001 18:19:25 +0100 akim
@@ -189,7 +189,9 @@
   char consistent;
 
   /* Used in LALR, not LR(0). */
-  short lookaheads;
+  /* Pseudo pointer into LA. */
+  short lookaheadsp;
+  int nlookaheads;
 
   /* Its items. */
   short nitems;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]