X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/cff03fb2b92a05f61c142783dd3b2e0103782869..6130b75585cad5f4bb2ee78875a0bfe109b2a3e3:/src/gram.c diff --git a/src/gram.c b/src/gram.c index fa3fdbf5..6b9eda13 100644 --- a/src/gram.c +++ b/src/gram.c @@ -121,8 +121,7 @@ rule_rhs_print_xml (rule *r, FILE *out, int level) item_number *rp; xml_puts (out, level, ""); for (rp = r->rhs; *rp >= 0; rp++) - xml_printf (out, level + 1, "%s", - symbol_class_get_string (symbols[*rp]), + xml_printf (out, level + 1, "%s", xml_escape (symbols[*rp]->tag)); xml_puts (out, level, ""); } @@ -197,45 +196,45 @@ grammar_rules_partial_print (FILE *out, const char *title, } void -grammar_rules_partial_print_xml (FILE *out, int level, bool rtag, - rule_filter filter) +grammar_rules_print (FILE *out) +{ + grammar_rules_partial_print (out, _("Grammar"), rule_useful_in_grammar_p); +} + +void +grammar_rules_print_xml (FILE *out, int level) { rule_number r; bool first = true; for (r = 0; r < nrules + nuseless_productions; r++) { - if (filter && !filter (&rules[r])) - continue; - if (rtag && first) + if (first) xml_puts (out, level + 1, ""); first = false; - - xml_printf (out, level + 2, "", - rules[r].number); + { + char const *usefulness; + if (rule_useless_in_grammar_p (&rules[r])) + usefulness = "useless-in-grammar"; + else if (rule_useless_in_parser_p (&rules[r])) + usefulness = "useless-in-parser"; + else + usefulness = "useful"; + xml_indent (out, level + 2); + fprintf (out, "tag); + fputs (">\n", out); + } rule_lhs_print_xml (&rules[r], out, level + 3); rule_rhs_print_xml (&rules[r], out, level + 3); xml_puts (out, level + 2, ""); } - if (rtag) - { - if (!first) - xml_puts (out, level + 1, ""); - else - xml_puts (out, level + 1, ""); - } -} - -void -grammar_rules_print (FILE *out) -{ - grammar_rules_partial_print (out, _("Grammar"), rule_useful_in_grammar_p); -} - -void -grammar_rules_print_xml (FILE *out, int level) -{ - grammar_rules_partial_print_xml (out, level, true, rule_useful_in_grammar_p); + if (!first) + xml_puts (out, level + 1, ""); + else + xml_puts (out, level + 1, ""); } void