mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
reports: let xml reports catch up with --report and --graph
The text and Dot reports are expected to be identical when generated directly (--report, --graph) or indirectly (via XML). The xml testsuite had not be run for ages, let it catch up a bit. * src/print-xml.c: Pass the type of the symbols. * data/xslt/xml2text.xsl Catch up with the new layout. Display the symbol types. Use '•', not '.' * tests/local.at: Smash '•' to '.' when matching against the direct text report. * tests/report.at: Adjust XML expectations.
This commit is contained in:
@@ -52,7 +52,7 @@
|
||||
<xsl:if test="nonterminal[@usefulness='useless-in-grammar']">
|
||||
<xsl:text>Nonterminals useless in grammar </xsl:text>
|
||||
<xsl:for-each select="nonterminal[@usefulness='useless-in-grammar']">
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:for-each>
|
||||
@@ -65,7 +65,7 @@
|
||||
<xsl:text>Terminals unused in grammar </xsl:text>
|
||||
<xsl:for-each select="terminal[@usefulness='unused-in-grammar']">
|
||||
<xsl:sort select="@symbol-number" data-type="number"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:for-each>
|
||||
@@ -136,6 +136,7 @@
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="terminal">
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:call-template name="line-wrap">
|
||||
<xsl:with-param name="first-line-length">
|
||||
@@ -148,6 +149,9 @@
|
||||
</xsl:with-param>
|
||||
<xsl:with-param name="line-length" select="66" />
|
||||
<xsl:with-param name="text">
|
||||
<xsl:if test="string-length(@type) != 0">
|
||||
<xsl:value-of select="concat(' <', @type, '>')"/>
|
||||
</xsl:if>
|
||||
<xsl:value-of select="concat(' (', @token-number, ')')"/>
|
||||
<xsl:for-each select="key('bison:ruleByRhs', @name)">
|
||||
<xsl:value-of select="concat(' ', @number)"/>
|
||||
@@ -157,14 +161,18 @@
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="nonterminal">
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:if test="string-length(@type) != 0">
|
||||
<xsl:value-of select="concat(' <', @type, '>')"/>
|
||||
</xsl:if>
|
||||
<xsl:value-of select="concat(' (', @symbol-number, ')')"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:variable name="output">
|
||||
<xsl:call-template name="line-wrap">
|
||||
<xsl:with-param name="line-length" select="66" />
|
||||
<xsl:with-param name="text">
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:if test="key('bison:ruleByLhs', @name)">
|
||||
<xsl:text>on@left:</xsl:text>
|
||||
<xsl:for-each select="key('bison:ruleByLhs', @name)">
|
||||
@@ -173,7 +181,7 @@
|
||||
</xsl:if>
|
||||
<xsl:if test="key('bison:ruleByRhs', @name)">
|
||||
<xsl:if test="key('bison:ruleByLhs', @name)">
|
||||
<xsl:text>, </xsl:text>
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:text>on@right:</xsl:text>
|
||||
<xsl:for-each select="key('bison:ruleByRhs', @name)">
|
||||
@@ -348,11 +356,11 @@
|
||||
<!-- RHS -->
|
||||
<xsl:for-each select="rhs/*">
|
||||
<xsl:if test="position() = $dot + 1">
|
||||
<xsl:text> .</xsl:text>
|
||||
<xsl:text> •</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates select="."/>
|
||||
<xsl:if test="position() = last() and position() = $dot">
|
||||
<xsl:text> .</xsl:text>
|
||||
<xsl:text> •</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
<xsl:if test="$lookaheads">
|
||||
|
||||
@@ -384,13 +384,15 @@ print_grammar (FILE *out, int level)
|
||||
{
|
||||
symbol const *sym = symbols[token_translations[i]];
|
||||
char const *tag = sym->tag;
|
||||
char const *type = sym->content->type_name;
|
||||
int precedence = sym->content->prec;
|
||||
assoc associativity = sym->content->assoc;
|
||||
xml_indent (out, level + 2);
|
||||
fprintf (out,
|
||||
"<terminal symbol-number=\"%d\" token-number=\"%d\""
|
||||
" name=\"%s\" usefulness=\"%s\"",
|
||||
token_translations[i], i, xml_escape (tag),
|
||||
" name=\"%s\" type=\"%s\" usefulness=\"%s\"",
|
||||
token_translations[i], i, xml_escape_n (0, tag),
|
||||
type ? xml_escape_n (1, type) : "",
|
||||
reduce_token_unused_in_grammar (token_translations[i])
|
||||
? "unused-in-grammar" : "useful");
|
||||
if (precedence)
|
||||
@@ -407,11 +409,14 @@ print_grammar (FILE *out, int level)
|
||||
{
|
||||
symbol const *sym = symbols[i];
|
||||
char const *tag = sym->tag;
|
||||
char const *type = sym->content->type_name;
|
||||
xml_printf (out, level + 2,
|
||||
"<nonterminal symbol-number=\"%d\" name=\"%s\""
|
||||
" type=\"%s\""
|
||||
" usefulness=\"%s\"/>",
|
||||
i, xml_escape (tag),
|
||||
reduce_nonterminal_useless_in_grammar (symbols[i]->content)
|
||||
i, xml_escape_n (0, tag),
|
||||
type ? xml_escape_n (1, type) : "",
|
||||
reduce_nonterminal_useless_in_grammar (sym->content)
|
||||
? "useless-in-grammar" : "useful");
|
||||
}
|
||||
xml_puts (out, level + 1, "</nonterminals>");
|
||||
|
||||
@@ -1169,11 +1169,16 @@ m4_define([AT_BISON_CHECK_XML],
|
||||
[cp xml-tests/test.output expout]
|
||||
AT_CHECK([[$XSLTPROC \
|
||||
`]]AT_SET_ENV[[ bison --print-datadir`/xslt/xml2text.xsl \
|
||||
xml-tests/test.xml]], [[0]], [expout])
|
||||
xml-tests/test.xml]], [[0]], [stdout])
|
||||
# xml2text and xml2dot always use '•', while --report uses '•' or '.'
|
||||
# depending on the locale, and the test suite is run with the plain
|
||||
# C locale.
|
||||
AT_CHECK([[sed -e 's/•/./g' stdout]], [], [expout])
|
||||
[sort xml-tests/test.gv > expout]
|
||||
AT_CHECK([[$XSLTPROC \
|
||||
`]]AT_SET_ENV[[ bison --print-datadir`/xslt/xml2dot.xsl \
|
||||
xml-tests/test.xml | sort]], [[0]], [expout])
|
||||
xml-tests/test.xml | sort | sed -e 's/•/./g']],
|
||||
[[0]], [stdout])
|
||||
[rm -rf xml-tests expout]
|
||||
AT_RESTORE_SPECIAL_FILES
|
||||
[fi]])
|
||||
|
||||
@@ -764,24 +764,24 @@ AT_CHECK([[sed -e 's/bison-xml-report version="[^"]*"/bison-xml-report version="
|
||||
</rule>
|
||||
</rules>
|
||||
<terminals>
|
||||
<terminal symbol-number="0" token-number="0" name=""end of file"" usefulness="useful"/>
|
||||
<terminal symbol-number="1" token-number="256" name="error" usefulness="useful"/>
|
||||
<terminal symbol-number="3" token-number="258" name="":="" usefulness="useful"/>
|
||||
<terminal symbol-number="4" token-number="259" name=""incr"" usefulness="useful"/>
|
||||
<terminal symbol-number="5" token-number="260" name=""identifier"" usefulness="useful"/>
|
||||
<terminal symbol-number="6" token-number="261" name=""number"" usefulness="useful"/>
|
||||
<terminal symbol-number="7" token-number="262" name=""("" usefulness="useful"/>
|
||||
<terminal symbol-number="8" token-number="263" name="")"" usefulness="useful"/>
|
||||
<terminal symbol-number="0" token-number="0" name=""end of file"" type="" usefulness="useful"/>
|
||||
<terminal symbol-number="1" token-number="256" name="error" type="" usefulness="useful"/>
|
||||
<terminal symbol-number="3" token-number="258" name="":="" type="" usefulness="useful"/>
|
||||
<terminal symbol-number="4" token-number="259" name=""incr"" type="" usefulness="useful"/>
|
||||
<terminal symbol-number="5" token-number="260" name=""identifier"" type="std::string" usefulness="useful"/>
|
||||
<terminal symbol-number="6" token-number="261" name=""number"" type="int" usefulness="useful"/>
|
||||
<terminal symbol-number="7" token-number="262" name=""("" type="" usefulness="useful"/>
|
||||
<terminal symbol-number="8" token-number="263" name="")"" type="" usefulness="useful"/>
|
||||
</terminals>
|
||||
<nonterminals>
|
||||
<nonterminal symbol-number="9" name="$accept" usefulness="useful"/>
|
||||
<nonterminal symbol-number="10" name="unit" usefulness="useful"/>
|
||||
<nonterminal symbol-number="11" name="assignments" usefulness="useful"/>
|
||||
<nonterminal symbol-number="12" name="assignment" usefulness="useful"/>
|
||||
<nonterminal symbol-number="13" name="id" usefulness="useful"/>
|
||||
<nonterminal symbol-number="14" name="exp" usefulness="useful"/>
|
||||
<nonterminal symbol-number="15" name="@1" usefulness="useful"/>
|
||||
<nonterminal symbol-number="16" name="@2" usefulness="useful"/>
|
||||
<nonterminal symbol-number="9" name="$accept" type="" usefulness="useful"/>
|
||||
<nonterminal symbol-number="10" name="unit" type="" usefulness="useful"/>
|
||||
<nonterminal symbol-number="11" name="assignments" type="" usefulness="useful"/>
|
||||
<nonterminal symbol-number="12" name="assignment" type="" usefulness="useful"/>
|
||||
<nonterminal symbol-number="13" name="id" type="std::string" usefulness="useful"/>
|
||||
<nonterminal symbol-number="14" name="exp" type="int" usefulness="useful"/>
|
||||
<nonterminal symbol-number="15" name="@1" type="int" usefulness="useful"/>
|
||||
<nonterminal symbol-number="16" name="@2" type="int" usefulness="useful"/>
|
||||
</nonterminals>
|
||||
</grammar>
|
||||
|
||||
@@ -1881,16 +1881,16 @@ AT_CHECK([[sed -e 's/bison-xml-report version="[^"]*"/bison-xml-report version="
|
||||
</rule>
|
||||
</rules>
|
||||
<terminals>
|
||||
<terminal symbol-number="0" token-number="0" name="$end" usefulness="useful"/>
|
||||
<terminal symbol-number="1" token-number="256" name="error" usefulness="useful"/>
|
||||
<terminal symbol-number="3" token-number="258" name=""+"" usefulness="useful" prec="1" assoc="left"/>
|
||||
<terminal symbol-number="4" token-number="259" name=""⊕"" usefulness="useful"/>
|
||||
<terminal symbol-number="5" token-number="260" name=""number"" usefulness="useful"/>
|
||||
<terminal symbol-number="6" token-number="261" name=""Ñùṃéℝô"" usefulness="useful"/>
|
||||
<terminal symbol-number="0" token-number="0" name="$end" type="" usefulness="useful"/>
|
||||
<terminal symbol-number="1" token-number="256" name="error" type="" usefulness="useful"/>
|
||||
<terminal symbol-number="3" token-number="258" name=""+"" type="" usefulness="useful" prec="1" assoc="left"/>
|
||||
<terminal symbol-number="4" token-number="259" name=""⊕"" type="" usefulness="useful"/>
|
||||
<terminal symbol-number="5" token-number="260" name=""number"" type="" usefulness="useful"/>
|
||||
<terminal symbol-number="6" token-number="261" name=""Ñùṃéℝô"" type="" usefulness="useful"/>
|
||||
</terminals>
|
||||
<nonterminals>
|
||||
<nonterminal symbol-number="7" name="$accept" usefulness="useful"/>
|
||||
<nonterminal symbol-number="8" name="exp" usefulness="useful"/>
|
||||
<nonterminal symbol-number="7" name="$accept" type="" usefulness="useful"/>
|
||||
<nonterminal symbol-number="8" name="exp" type="" usefulness="useful"/>
|
||||
</nonterminals>
|
||||
</grammar>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user