]> git.saurik.com Git - bison.git/commitdiff
* src/closure.c (set_fderives): De-obfuscate.
authorAkim Demaille <akim@epita.fr>
Wed, 5 Dec 2001 09:40:00 +0000 (09:40 +0000)
committerAkim Demaille <akim@epita.fr>
Wed, 5 Dec 2001 09:40:00 +0000 (09:40 +0000)
ChangeLog
src/closure.c

index 18fba633a43fd99d547829d92da3694daec753e6..1b041ea61bb94ae31e341612db452cf7f4ac17b2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2001-12-05  Akim Demaille  <akim@epita.fr>
+
+       * src/closure.c (set_fderives): De-obfuscate.
+
+       
 2001-12-05  Akim Demaille  <akim@epita.fr>
 
        * src/closure.c (print_firsts, print_fderives): De-obfuscate.
index 4b0a6ec0a59e7209f6d85bc894a5cb8663d84d6e..83effa9175b4cddc348e1257a5c47a7dd35580b5 100644 (file)
@@ -128,10 +128,7 @@ set_firsts (void)
       {
        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 @@ set_firsts (void)
 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 ();