bison-patches
[Top][All Lists]
Advanced

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

26-fyi-set-fderives.patch


From: Akim Demaille
Subject: 26-fyi-set-fderives.patch
Date: Wed, 05 Dec 2001 08:26:12 +0100

Index: ChangeLog
from  Akim Demaille  <address@hidden>
        * src/closure.c (set_fderives): De-obfuscate.
        
        
Index: src/closure.c
--- src/closure.c Mon, 03 Dec 2001 19:36:09 +0100 akim
+++ src/closure.c Mon, 03 Dec 2001 19:42:06 +0100 akim
@@ -128,10 +128,7 @@
       {
        int symbol = ritem[rule_table[derives[i][j]].rhs];
        if (ISVAR (symbol))
-         {
-           symbol -= ntokens;
-           SETBIT (FIRSTS (i - ntokens), symbol);
-         }
+         SETBIT (FIRSTS (i - ntokens), symbol - ntokens);
       }
 
   RTC (firsts, nvars);
@@ -153,46 +150,17 @@
 static void
 set_fderives (void)
 {
-  unsigned *rrow;
-  unsigned *vrow;
-  int j;
-  unsigned cword;
-  short *rp;
-  int b;
-
-  int ruleno;
-  int i;
+  int i, j, k;
 
   fderives = XCALLOC (unsigned, nvars * rulesetsize) - ntokens * rulesetsize;
 
   set_firsts ();
 
-  rrow = FDERIVES (ntokens);
-
-  for (i = ntokens; i < nsyms; i++)
-    {
-      vrow = FIRSTS (i - ntokens);
-      cword = *vrow++;
-      b = 0;
-      for (j = ntokens; j < nsyms; j++)
-       {
-         if (cword & (1 << b))
-           {
-             rp = derives[j];
-             while ((ruleno = *rp++) > 0)
-               SETBIT (rrow, ruleno);
-           }
-
-         b++;
-         if (b >= BITS_PER_WORD && j + 1 < nsyms)
-           {
-             cword = *vrow++;
-             b = 0;
-           }
-       }
-
-      rrow += rulesetsize;
-    }
+  for (i = ntokens; i < nsyms; ++i)
+    for (j = ntokens; j < nsyms; ++j)
+      if (BITISSET (FIRSTS (i - ntokens), j - ntokens))
+       for (k = 0; derives[j][k] > 0; ++k)
+         SETBIT (FDERIVES (i), derives[j][k]);
 
   if (trace_flag)
     print_fderives ();



reply via email to

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