]> git.saurik.com Git - bison.git/commitdiff
* src/state.h, src/state.c (state_rule_lookaheads_print): New.
authorAkim Demaille <akim@epita.fr>
Sat, 15 Jun 2002 18:24:25 +0000 (18:24 +0000)
committerAkim Demaille <akim@epita.fr>
Sat, 15 Jun 2002 18:24:25 +0000 (18:24 +0000)
* src/print.c (print_core): Use it.

ChangeLog
src/print.c
src/state.c
src/state.h

index b61837f5eaa84112e26cba6f84343d178eb17948..528a742e75bdc1df27f7c84f0d705d495bfb70ff 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2002-06-15  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h, src/state.c (state_rule_lookaheads_print): New.
+       * src/print.c (print_core): Use it.
+
+       
 2002-06-15  Akim Demaille  <akim@epita.fr>
 
        * src/conflicts.c (log_resolution): Accept the rule involved in
index 027f3fe3e027139adc988335598e92f652991a96..b0ff76ed2f97137fa4e36f990cee526d12049289 100644 (file)
@@ -93,28 +93,7 @@ print_core (FILE *out, state_t *state)
 
          /* Display the lookaheads?  */
          if (report_flag & report_lookaheads)
-           {
-             int j, k;
-             int nlookaheads = 0;
-             /* Look for lookaheads corresponding to this rule. */
-             for (j = 0; j < state->nlookaheads; ++j)
-               for (k = 0; k < ntokens; ++k)
-                 if (bitset_test (state->lookaheads[j], k)
-                     && state->lookaheads_rule[j]->number == rule)
-                   nlookaheads++;
-             if (nlookaheads)
-               {
-                 fprintf (out, "  [");
-                 for (j = 0; j < state->nlookaheads; ++j)
-                   for (k = 0; k < ntokens; ++k)
-                     if (bitset_test (state->lookaheads[j], k)
-                         && state->lookaheads_rule[j]->number == rule)
-                       fprintf (out, "%s%s",
-                                symbol_tag_get (symbols[k]),
-                                --nlookaheads ? ", " : "");
-                 fprintf (out, "]");
-               }
-           }
+           state_rule_lookaheads_print (state, &rules[rule], out);
 
          fprintf (out, _("   (rule %d)"), rule - 1);
          fputc ('\n', out);
index dd8c3b6ecc159263e0439db2875c6a0c4caff039..cb4cd5bcc6bdab8a1023f7d8cc89a70b41c53dc2 100644 (file)
@@ -81,3 +81,36 @@ reductions_new (int n)
   res->nreds = n;
   return res;
 }
+
+
+/*--------------------------------------------------------------.
+| Print on OUT all the lookaheads such that this STATE wants to |
+| reduce this RULE.                                             |
+`--------------------------------------------------------------*/
+
+void
+state_rule_lookaheads_print (state_t *state, rule_t *rule, FILE *out)
+{
+  int j, k;
+  int nlookaheads = 0;
+  /* Count the number of lookaheads corresponding to this rule.  */
+  for (j = 0; j < state->nlookaheads; ++j)
+    for (k = 0; k < ntokens; ++k)
+      if (bitset_test (state->lookaheads[j], k)
+         && state->lookaheads_rule[j]->number == rule->number)
+       nlookaheads++;
+
+  /* Print them if there are.  */
+  if (nlookaheads)
+    {
+      fprintf (out, "  [");
+      for (j = 0; j < state->nlookaheads; ++j)
+       for (k = 0; k < ntokens; ++k)
+         if (bitset_test (state->lookaheads[j], k)
+             && state->lookaheads_rule[j]->number == rule->number)
+           fprintf (out, "%s%s",
+                    symbol_tag_get (symbols[k]),
+                    --nlookaheads ? ", " : "");
+      fprintf (out, "]");
+    }
+}
index 239a367d91fb65e619f01c672bcff09b6e837e51..1877ec48bfeef941dd3d6f12bc8f2639cf8280a5 100644 (file)
@@ -199,4 +199,10 @@ typedef struct state_s
   (state_t *) xcalloc ((unsigned) (sizeof (state_t)                    \
                                   + (Nitems - 1) * sizeof (item_number_t)), 1)
 
+/* Print on OUT all the lookaheads such that this STATE wants to
+   reduce this RULE.  */
+
+void state_rule_lookaheads_print PARAMS ((state_t *state, rule_t *rule,
+                                         FILE *out));
+
 #endif /* !STATE_H_ */