407 |
void |
void |
408 |
reduce_output (FILE *out) |
reduce_output (FILE *out) |
409 |
{ |
{ |
|
int i; |
|
|
rule r; |
|
|
bool b; |
|
|
|
|
410 |
if (nuseless_nonterminals > 0) |
if (nuseless_nonterminals > 0) |
411 |
{ |
{ |
412 |
fprintf (out, _("Useless nonterminals:")); |
int i; |
413 |
fprintf (out, "\n\n"); |
fprintf (out, "%s\n\n", _("Useless nonterminals:")); |
414 |
for (i = 0; i < nuseless_nonterminals; ++i) |
for (i = 0; i < nuseless_nonterminals; ++i) |
415 |
fprintf (out, " %s\n", tags[nsyms + i]); |
fprintf (out, " %s\n", tags[nsyms + i]); |
416 |
|
fputs ("\n\n", out); |
417 |
} |
} |
418 |
b = FALSE; |
|
419 |
for (i = 0; i < ntokens; i++) |
{ |
420 |
{ |
bool b = FALSE; |
421 |
|
int i; |
422 |
|
for (i = 0; i < ntokens; i++) |
423 |
if (!BITISSET (V, i) && !BITISSET (V1, i)) |
if (!BITISSET (V, i) && !BITISSET (V1, i)) |
424 |
{ |
{ |
425 |
if (!b) |
if (!b) |
426 |
{ |
fprintf (out, "%s\n\n", _("Terminals which are not used:")); |
427 |
fprintf (out, "\n\n"); |
b = TRUE; |
|
fprintf (out, _("Terminals which are not used:")); |
|
|
fprintf (out, "\n\n"); |
|
|
b = TRUE; |
|
|
} |
|
428 |
fprintf (out, " %s\n", tags[i]); |
fprintf (out, " %s\n", tags[i]); |
429 |
} |
} |
430 |
} |
if (b) |
431 |
|
fputs ("\n\n", out); |
432 |
|
} |
433 |
|
|
434 |
if (nuseless_productions > 0) |
if (nuseless_productions > 0) |
435 |
{ |
{ |
436 |
fprintf (out, "\n\n"); |
int i; |
437 |
fprintf (out, _("Useless rules:")); |
fprintf (out, "%s\n\n", _("Useless rules:")); |
|
fprintf (out, "\n\n"); |
|
438 |
for (i = 1; i <= nrules; i++) |
for (i = 1; i <= nrules; i++) |
439 |
if (!BITISSET (P, i)) |
if (!BITISSET (P, i)) |
440 |
{ |
{ |
441 |
|
rule r; |
442 |
fprintf (out, "#%-4d ", i); |
fprintf (out, "#%-4d ", i); |
443 |
fprintf (out, "%s :\t", tags[rule_table[i].lhs]); |
fprintf (out, "%s :\t", tags[rule_table[i].lhs]); |
444 |
for (r = &ritem[rule_table[i].rhs]; *r >= 0; r++) |
for (r = &ritem[rule_table[i].rhs]; *r >= 0; r++) |
445 |
fprintf (out, " %s", tags[*r]); |
fprintf (out, " %s", tags[*r]); |
446 |
fprintf (out, ";\n"); |
fputs (";\n", out); |
447 |
} |
} |
448 |
|
fputs ("\n\n", out); |
449 |
} |
} |
|
if (nuseless_nonterminals > 0 || nuseless_productions > 0 || b) |
|
|
fprintf (out, "\n\n"); |
|
450 |
} |
} |
451 |
|
|
452 |
static void |
static void |