]> git.saurik.com Git - bison.git/commitdiff
* src/state.h (SHIFT_SYMBOL): New.
authorAkim Demaille <akim@epita.fr>
Wed, 5 Dec 2001 09:31:46 +0000 (09:31 +0000)
committerAkim Demaille <akim@epita.fr>
Wed, 5 Dec 2001 09:31:46 +0000 (09:31 +0000)
* src/conflicts.c: Use it to deobfuscate.

ChangeLog
src/conflicts.c
src/state.h

index 315f4184240ffb45c869e85aafcc7387dc88ad38..4edae40dd3cbabfc22dad332b8f1b66c5d128ffa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2001-12-05  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h (SHIFT_SYMBOL): New.
+       * src/conflicts.c: Use it to deobfuscate.
+
+       
 2001-12-05  Akim Demaille  <akim@epita.fr>
 
        * src/conflicts.c (count_sr_conflicts, count_rr_conflicts)
index bb6f8ac7b849a900ef874a8dfeb2973300c6e1cc..3aa4ad141688792840fa33a24a2a961370d9c091 100644 (file)
@@ -184,7 +184,6 @@ set_conflicts (int state)
 {
   int i, j;
   shifts *shiftp;
-  int symbol;
 
   if (state_table[state].consistent)
     return;
@@ -194,13 +193,8 @@ set_conflicts (int state)
 
   shiftp = state_table[state].shift_table;
   if (shiftp)
-    for (i = 0; i < shiftp->nshifts; i++)
-      {
-       symbol = state_table[shiftp->shifts[i]].accessing_symbol;
-       if (ISVAR (symbol))
-         break;
-       SETBIT (lookaheadset, symbol);
-      }
+    for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++)
+      SETBIT (lookaheadset, SHIFT_SYMBOL (shiftp, i));
 
   /* Loop over all rules which require lookahead in this state.  First
      check for shift-reduce conflict, and try to resolve using
@@ -269,10 +263,7 @@ count_sr_conflicts (int state)
     }
 
   for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++)
-    {
-      int symbol = state_table[shiftp->shifts[i]].accessing_symbol;
-      SETBIT (shiftset, symbol);
-    }
+    SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i));
 
   for (i = state_table[state].lookaheads;
        i < state_table[state + 1].lookaheads;
@@ -451,7 +442,6 @@ print_reductions (FILE *out, int state)
 {
   int i;
   int j;
-  int symbol;
   int m;
   int n;
   shifts *shiftp;
@@ -463,18 +453,13 @@ print_reductions (FILE *out, int state)
 
   shiftp = state_table[state].shift_table;
   if (shiftp)
-    for (i = 0; i < shiftp->nshifts; i++)
+    for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++)
       {
-       if (!shiftp->shifts[i])
-         continue;
-       symbol = state_table[shiftp->shifts[i]].accessing_symbol;
-       if (ISVAR (symbol))
-         break;
-       /* if this state has a shift for the error token,
-          don't use a default rule.  */
-       if (symbol == error_token_number)
+       /* if this state has a shift for the error token, don't use a
+          default rule.  */
+       if (SHIFT_IS_ERROR (shiftp, i))
          nodefault = 1;
-       SETBIT (shiftset, symbol);
+       SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i));
       }
 
   errp = err_table[state];
@@ -538,15 +523,8 @@ print_reductions (FILE *out, int state)
        shiftset[i] = 0;
 
       if (shiftp)
-       for (i = 0; i < shiftp->nshifts; i++)
-         {
-           if (!shiftp->shifts[i])
-             continue;
-           symbol = state_table[shiftp->shifts[i]].accessing_symbol;
-           if (ISVAR (symbol))
-             break;
-           SETBIT (shiftset, symbol);
-         }
+       for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++)
+         SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i));
 
       for (i = 0; i < ntokens; i++)
        {
index 37598cb0ff7642573057307a18b85549f9b74e4b..535742971c0ecdddfeebab424db58e484eecad70 100644 (file)
@@ -124,10 +124,17 @@ typedef struct shifts
   (shifts *) xcalloc ((unsigned) (sizeof (shifts)                      \
                                   + (Nshifts - 1) * sizeof (short)), 1)
 
+/* What is the symbol which is shifted by SHIFTS->shifts[Shift]?  Can
+   be a token (amongst which the error token), or non terminals in
+   case of gotos.  */
+
+#define SHIFT_SYMBOL(Shifts, Shift) \
+  (state_table[Shifts->shifts[Shift]].accessing_symbol)
+
 /* Is the SHIFTS->shifts[Shift] a real shift? (as opposed to gotos.) */
 
 #define SHIFT_IS_SHIFT(Shifts, Shift) \
-  (ISTOKEN (state_table[Shifts->shifts[Shift]].accessing_symbol))
+  (ISTOKEN (SHIFT_SYMBOL (Shifts, Shift)))
 
 /* Is the SHIFTS->shifts[Shift] a goto?. */
 
@@ -137,7 +144,7 @@ typedef struct shifts
 /* Is the SHIFTS->shifts[Shift] then handling of the error token?. */
 
 #define SHIFT_IS_ERROR(Shifts, Shift) \
-  (state_table[Shifts->shifts[Shift]].accessing_symbol == error_token_number)
+  (SHIFT_SYMBOL (Shifts, Shift) == error_token_number)
 
 
 /*-------.