* 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 b61837f..528a742 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 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
        the sr conflicts instead of the lookahead number that points to
        that rule.
index 027f3fe..b0ff76e 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 dd8c3b6..cb4cd5b 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 239a367..1877ec4 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_ */