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:
Akim Demaille
2020-07-11 08:41:37 +02:00
parent a839f4c461
commit 44ad466a32
4 changed files with 54 additions and 36 deletions

View File

@@ -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(' &lt;', @type, '&gt;')"/>
</xsl:if>
<xsl:value-of select="concat(' (', @token-number, ')')"/>
<xsl:for-each select="key('bison:ruleByRhs', @name)">
<xsl:value-of select="concat(' ', @number)"/>
@@ -157,7 +161,11 @@
</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(' &lt;', @type, '&gt;')"/>
</xsl:if>
<xsl:value-of select="concat(' (', @symbol-number, ')')"/>
<xsl:text>&#10;</xsl:text>
<xsl:variable name="output">
@@ -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>&#10; </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">

View File

@@ -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>");

View File

@@ -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]])

View File

@@ -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="&quot;end of file&quot;" usefulness="useful"/>
<terminal symbol-number="1" token-number="256" name="error" usefulness="useful"/>
<terminal symbol-number="3" token-number="258" name="&quot;:=&quot;" usefulness="useful"/>
<terminal symbol-number="4" token-number="259" name="&quot;incr&quot;" usefulness="useful"/>
<terminal symbol-number="5" token-number="260" name="&quot;identifier&quot;" usefulness="useful"/>
<terminal symbol-number="6" token-number="261" name="&quot;number&quot;" usefulness="useful"/>
<terminal symbol-number="7" token-number="262" name="&quot;(&quot;" usefulness="useful"/>
<terminal symbol-number="8" token-number="263" name="&quot;)&quot;" usefulness="useful"/>
<terminal symbol-number="0" token-number="0" name="&quot;end of file&quot;" type="" usefulness="useful"/>
<terminal symbol-number="1" token-number="256" name="error" type="" usefulness="useful"/>
<terminal symbol-number="3" token-number="258" name="&quot;:=&quot;" type="" usefulness="useful"/>
<terminal symbol-number="4" token-number="259" name="&quot;incr&quot;" type="" usefulness="useful"/>
<terminal symbol-number="5" token-number="260" name="&quot;identifier&quot;" type="std::string" usefulness="useful"/>
<terminal symbol-number="6" token-number="261" name="&quot;number&quot;" type="int" usefulness="useful"/>
<terminal symbol-number="7" token-number="262" name="&quot;(&quot;" type="" usefulness="useful"/>
<terminal symbol-number="8" token-number="263" name="&quot;)&quot;" 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="&quot;+&quot;" usefulness="useful" prec="1" assoc="left"/>
<terminal symbol-number="4" token-number="259" name="&quot;⊕&quot;" usefulness="useful"/>
<terminal symbol-number="5" token-number="260" name="&quot;number&quot;" usefulness="useful"/>
<terminal symbol-number="6" token-number="261" name="&quot;Ñùṃéℝô&quot;" 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="&quot;+&quot;" type="" usefulness="useful" prec="1" assoc="left"/>
<terminal symbol-number="4" token-number="259" name="&quot;⊕&quot;" type="" usefulness="useful"/>
<terminal symbol-number="5" token-number="260" name="&quot;number&quot;" type="" usefulness="useful"/>
<terminal symbol-number="6" token-number="261" name="&quot;Ñùṃéℝô&quot;" 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>