- rule_useless_in_grammar_p);
-}
-\f
-
-/*--------------------------------------------------------------.
-| Output the detailed results of the reductions. For FILE.xml. |
-`---------------------------------------------------------------*/
-
-void
-reduce_xml (FILE *out, int level)
-{
- fputc ('\n', out);
- xml_puts (out, level, "<reductions>");
- xml_puts (out, level + 1, "<useless-in-grammar>");
-
- if (nuseless_nonterminals > 0)
- {
- int i;
- xml_puts (out, level + 2, "<nonterminals>");
- for (i = 0; i < nuseless_nonterminals; ++i)
- xml_printf (out, level + 3,
- "<nonterminal>%s</nonterminal>",
- symbols[nsyms + i]->tag);
- xml_puts (out, level + 2, "</nonterminals>");
- }
- else
- xml_puts (out, level + 2, "<nonterminals/>");
-
- if (nuseless_productions > 0)
- grammar_rules_partial_print_xml (out, level + 1, true,
- rule_useless_in_grammar_p);
- else
- xml_puts (out, level + 2, "<rules/>");
-
- xml_puts (out, level + 1, "</useless-in-grammar>");
- xml_puts (out, level + 1, "<unused>");
-
- {
- bool b = false;
- int i;
- for (i = 0; i < ntokens; i++)
- if (!bitset_test (V, i) && !bitset_test (V1, i))
- {
- if (!b)
- xml_puts (out, level + 2, "<terminals>");
- b = true;
- xml_printf (out, level + 3,
- "<terminal>%s</terminal>",
- xml_escape (symbols[i]->tag));
- }
- if (b)
- xml_puts (out, level + 2, "</terminals>");
- else
- xml_puts (out, level + 2, "<terminals/>");
- }
-
- xml_puts (out, level + 1, "</unused>");
- xml_puts (out, level, "</reductions>");
- fputc ('\n', out);