Пример #1
0
Файл: tf.c Проект: NetSys/sts
void
tf_print (const struct tf *tf)
{
  if (tf->prefix) printf ("Prefix: %s\n", DATA_STR (tf->prefix));
  for (int i = 0; i < tf->nrules; i++)
    rule_print (&tf->rules[i], tf);
}
Пример #2
0
void
grammar_rules_never_reduced_report (const char *message)
{
  rule_number r;
  for (r = 0; r < nrules ; ++r)
    if (!rules[r].useful)
      {
	location_print (stderr, rules[r].location);
	fprintf (stderr, ": %s: %s: ", _("warning"), message);
	rule_print (&rules[r], stderr);
      }
}
Пример #3
0
void
res_print (const struct res *res, bool backward)
{
  if (!backward && res->parent) res_print (res->parent, backward);
  printf ("-> Port: %d", res->port);
  printf ("\n");
  printf ("-> HS: \n");
  hs_print (&res->hs);
  if (res->rules.cur) {
    printf (", Rules: ");
    for (int i = 0; i < res->rules.cur; i++) {
      if (i) printf (", ");
      const struct res_rule *r = &res->rules.arr[i];
      printf ("%s_%d", r->tf ? r->tf : "", r->rule);
      printf ("\n");
      rule_print (r->tf_rule, r->tf_tf);
    }
  }
  printf ("\n");
  if (backward && res->parent) res_print (res->parent, backward);
}
Пример #4
0
void
grammar_dump (FILE *out, const char *title)
{
  fprintf (out, "%s\n\n", title);
  fprintf (out,
	   "ntokens = %d, nvars = %d, nsyms = %d, nrules = %d, nritems = %d\n\n",
	   ntokens, nvars, nsyms, nrules, nritems);


  fprintf (out, "Variables\n---------\n\n");
  {
    symbol_number i;
    fprintf (out, "Value  Sprec  Sassoc  Tag\n");

    for (i = ntokens; i < nsyms; i++)
      fprintf (out, "%5d  %5d   %5d  %s\n",
	       i,
	       symbols[i]->prec, symbols[i]->assoc,
	       symbols[i]->tag);
    fprintf (out, "\n\n");
  }

  fprintf (out, "Rules\n-----\n\n");
  {
    rule_number i;
    fprintf (out, "Num (Prec, Assoc, Useful, Ritem Range) Lhs -> Rhs (Ritem range) [Num]\n");
    for (i = 0; i < nrules + nuseless_productions; i++)
      {
	rule *rule_i = &rules[i];
	item_number *rp = NULL;
	unsigned int rhs_itemno = rule_i->rhs - ritem;
	unsigned int rhs_count = 0;
	/* Find the last RHS index in ritems. */
	for (rp = rule_i->rhs; *rp >= 0; ++rp)
	  ++rhs_count;
	fprintf (out, "%3d (%2d, %2d, %2d, %2u-%2u)   %2d ->",
		 i,
		 rule_i->prec ? rule_i->prec->prec : 0,
		 rule_i->prec ? rule_i->prec->assoc : 0,
		 rule_i->useful,
		 rhs_itemno,
		 rhs_itemno + rhs_count - 1,
		 rule_i->lhs->number);
	/* Dumped the RHS. */
	for (rp = rule_i->rhs; *rp >= 0; rp++)
	  fprintf (out, " %3d", *rp);
	fprintf (out, "  [%d]\n", item_number_as_rule_number (*rp));
      }
  }
  fprintf (out, "\n\n");

  fprintf (out, "Rules interpreted\n-----------------\n\n");
  {
    rule_number r;
    for (r = 0; r < nrules + nuseless_productions; r++)
      {
	fprintf (out, "%-5d  ", r);
	rule_print (&rules[r], out);
      }
  }
  fprintf (out, "\n\n");
}