From d4a26c4832ca0ae76c99b98144513dced634280b Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Sat, 8 Dec 2007 16:05:38 +0000 Subject: [PATCH] * data/xslt/bison.xsl (bison:ruleNumber): Rename to... (bison:ruleByNumber): ... this for clarity. * data/xslt/xml2dot.xsl (xsl:template match="item"): Update. * data/xslt/xml2text.xsl (xsl:template match="item"): Update. (xsl:template match="reduction"): Update. (xsl:template match="item"): Update. (xsl:template match="reduction"): Update. In the XML output, don't print the list of rules where symbols appear. Compute it in XSLT instead. Discussed at . * data/xslt/bison.xsl (bison:ruleByLhs): New. (bison:ruleByRhs): New. * data/xslt/xml2text.xsl (xsl:template match="terminal"): Use bison:ruleByRhs. (xsl:template match="terminal/rule"): Remove. (xsl:template match="nonterminal"): Use bison:ruleByLhs and bison:ruleByRhs. (xsl:template match="nonterminal/left/rule|nonterminal/right/rule"): Remove. * data/xslt/xml2xhtml.xsl (xsl:template match="terminal"): Use bison:ruleByRhs and mode="number-link" for rule template. (xsl:template match="terminal/rule"): Remove. (xsl:template match="nonterminal"): Use bison:ruleByLhs and bison:ruleByRhs and mode="number-link" for rule template. (xsl:template match="nonterminal/left/rule|nonterminal/right/rule"): Rewrite as... (xsl:template match="rule" mode="number-link"): ... this. * src/print-xml.c (print_grammar): Don't print the list of rules. --- ChangeLog | 32 +++++++++++++++++++++ data/xslt/bison.xsl | 20 ++++++++++++-- data/xslt/xml2dot.xsl | 2 +- data/xslt/xml2text.xsl | 44 ++++++++++++++--------------- data/xslt/xml2xhtml.xsl | 48 ++++++++++++++++---------------- src/print-xml.c | 61 ++--------------------------------------- 6 files changed, 98 insertions(+), 109 deletions(-) diff --git a/ChangeLog b/ChangeLog index a5b31366..b3db792b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,35 @@ +2007-12-08 Joel E. Denny + + * data/xslt/bison.xsl (bison:ruleNumber): Rename to... + (bison:ruleByNumber): ... this for clarity. + * data/xslt/xml2dot.xsl (xsl:template match="item"): Update. + * data/xslt/xml2text.xsl (xsl:template match="item"): Update. + (xsl:template match="reduction"): Update. + (xsl:template match="item"): Update. + (xsl:template match="reduction"): Update. + + In the XML output, don't print the list of rules where symbols appear. + Compute it in XSLT instead. Discussed at + . + * data/xslt/bison.xsl (bison:ruleByLhs): New. + (bison:ruleByRhs): New. + * data/xslt/xml2text.xsl (xsl:template match="terminal"): Use + bison:ruleByRhs. + (xsl:template match="terminal/rule"): Remove. + (xsl:template match="nonterminal"): Use bison:ruleByLhs and + bison:ruleByRhs. + (xsl:template match="nonterminal/left/rule|nonterminal/right/rule"): + Remove. + * data/xslt/xml2xhtml.xsl (xsl:template match="terminal"): Use + bison:ruleByRhs and mode="number-link" for rule template. + (xsl:template match="terminal/rule"): Remove. + (xsl:template match="nonterminal"): Use bison:ruleByLhs and + bison:ruleByRhs and mode="number-link" for rule template. + (xsl:template match="nonterminal/left/rule|nonterminal/right/rule"): + Rewrite as... + (xsl:template match="rule" mode="number-link"): ... this. + * src/print-xml.c (print_grammar): Don't print the list of rules. + 2007-12-01 Joel E. Denny Don't let --report affect XML output; always print all information. diff --git a/data/xslt/bison.xsl b/data/xslt/bison.xsl index ce3fe0f3..dc0dd9c5 100644 --- a/data/xslt/bison.xsl +++ b/data/xslt/bison.xsl @@ -26,9 +26,23 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:bison="http://www.gnu.org/software/bison/"> - + + + diff --git a/data/xslt/xml2dot.xsl b/data/xslt/xml2dot.xsl index d1d2691a..e106da1e 100644 --- a/data/xslt/xml2dot.xsl +++ b/data/xslt/xml2dot.xsl @@ -61,7 +61,7 @@ - + diff --git a/data/xslt/xml2text.xsl b/data/xslt/xml2text.xsl index c2568a44..0e4811d7 100644 --- a/data/xslt/xml2text.xsl +++ b/data/xslt/xml2text.xsl @@ -150,16 +150,13 @@ - + + + - - - - - @@ -169,28 +166,27 @@ - + on@left: + + + - - - , - - + + + , + on@right: + + + - - - - - - @@ -296,11 +292,15 @@ - + - + @@ -443,7 +443,7 @@ ( + select="key('bison:ruleByNumber', current()/@rule)/lhs[text()]"/> ) diff --git a/data/xslt/xml2xhtml.xsl b/data/xslt/xml2xhtml.xsl index 15155e9d..c1936dc6 100644 --- a/data/xslt/xml2xhtml.xsl +++ b/data/xslt/xml2xhtml.xsl @@ -326,45 +326,41 @@ - + + + - - - - - - - - - - - + on left: + + + - - - - - + + + + on right: + + + - - + - + - + @@ -451,11 +447,14 @@ - + + select="key('bison:ruleByNumber', $prev-rule-number)/lhs[text()]" + /> @@ -644,7 +643,8 @@ ( + select="key('bison:ruleByNumber', current()/@rule)/lhs[text()]" + /> ) diff --git a/src/print-xml.c b/src/print-xml.c index 33ececa7..9b1891bd 100644 --- a/src/print-xml.c +++ b/src/print-xml.c @@ -392,24 +392,12 @@ print_grammar (FILE *out, int level) if (token_translations[i] != undeftoken->number) { char const *tag = symbols[token_translations[i]]->tag; - rule_number r; - item_number *rhsp; - xml_printf (out, level + 2, "", + " name=\"%s\" usefulness=\"%s\"/>", token_translations[i], i, xml_escape (tag), reduce_token_unused_in_grammar (token_translations[i]) ? "unused-in-grammar" : "useful"); - - for (r = 0; r < nrules; r++) - for (rhsp = rules[r].rhs; *rhsp >= 0; rhsp++) - if (item_number_as_symbol_number (*rhsp) == token_translations[i]) - { - xml_printf (out, level + 3, "%d", r); - break; - } - xml_puts (out, level + 2, ""); } xml_puts (out, level + 1, ""); @@ -417,58 +405,13 @@ print_grammar (FILE *out, int level) xml_puts (out, level + 1, ""); for (i = ntokens; i < nsyms + nuseless_nonterminals; i++) { - int left_count = 0, right_count = 0; - rule_number r; char const *tag = symbols[i]->tag; - - for (r = 0; r < nrules; r++) - { - item_number *rhsp; - if (rules[r].lhs->number == i) - left_count++; - for (rhsp = rules[r].rhs; *rhsp >= 0; rhsp++) - if (item_number_as_symbol_number (*rhsp) == i) - { - right_count++; - break; - } - } - xml_printf (out, level + 2, "", + " usefulness=\"%s\"/>", i, xml_escape (tag), reduce_nonterminal_useless_in_grammar (i) ? "useless-in-grammar" : "useful"); - - if (left_count > 0) - { - xml_puts (out, level + 3, ""); - for (r = 0; r < nrules; r++) - { - if (rules[r].lhs->number == i) - xml_printf (out, level + 4, "%d", r); - } - xml_puts (out, level + 3, ""); - } - - if (right_count > 0) - { - xml_puts (out, level + 3, ""); - 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, "%d", r); - break; - } - } - xml_puts (out, level + 3, ""); - } - - xml_puts (out, level + 2, ""); } xml_puts (out, level + 1, ""); xml_puts (out, level, ""); -- 2.47.2