- "<nonterminal number=\"%d\" name=\"%s\">",
- i, xml_escape (tag));
-
- if (left_count > 0)
- {
- xml_puts (out, level + 3, "<left>");
- for (r = 0; r < nrules; r++)
- {
- if (rules[r].lhs->number == i)
- xml_printf (out, level + 4, "<rule>%d</rule>", r);
- }
- xml_puts (out, level + 3, "</left>");
- }
-
- if (right_count > 0)
- {
- xml_puts (out, level + 3, "<right>");
- for (r = 0; r < nrules; r++)
- {
- item_number *rhsp;
- for (rhsp = rules[r].rhs; *rhsp >= 0; rhsp++)
- if (item_number_as_symbol_number (*rhsp) == i)
- {
- xml_printf (out, level + 4, "<rule>%d</rule>", r);
- break;
- }
- }
- xml_puts (out, level + 3, "</right>");
- }
-
- xml_puts (out, level + 2, "</nonterminal>");
+ "<nonterminal symbol-number=\"%d\" name=\"%s\""
+ " usefulness=\"%s\"/>",
+ i, xml_escape (tag),
+ reduce_nonterminal_useless_in_grammar (i)
+ ? "useless-in-grammar" : "useful");