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:
@@ -136,6 +136,7 @@
|
|||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<xsl:template match="terminal">
|
<xsl:template match="terminal">
|
||||||
|
<xsl:text> </xsl:text>
|
||||||
<xsl:value-of select="@name"/>
|
<xsl:value-of select="@name"/>
|
||||||
<xsl:call-template name="line-wrap">
|
<xsl:call-template name="line-wrap">
|
||||||
<xsl:with-param name="first-line-length">
|
<xsl:with-param name="first-line-length">
|
||||||
@@ -148,6 +149,9 @@
|
|||||||
</xsl:with-param>
|
</xsl:with-param>
|
||||||
<xsl:with-param name="line-length" select="66" />
|
<xsl:with-param name="line-length" select="66" />
|
||||||
<xsl:with-param name="text">
|
<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:value-of select="concat(' (', @token-number, ')')"/>
|
||||||
<xsl:for-each select="key('bison:ruleByRhs', @name)">
|
<xsl:for-each select="key('bison:ruleByRhs', @name)">
|
||||||
<xsl:value-of select="concat(' ', @number)"/>
|
<xsl:value-of select="concat(' ', @number)"/>
|
||||||
@@ -157,7 +161,11 @@
|
|||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<xsl:template match="nonterminal">
|
<xsl:template match="nonterminal">
|
||||||
|
<xsl:text> </xsl:text>
|
||||||
<xsl:value-of select="@name"/>
|
<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:value-of select="concat(' (', @symbol-number, ')')"/>
|
||||||
<xsl:text> </xsl:text>
|
<xsl:text> </xsl:text>
|
||||||
<xsl:variable name="output">
|
<xsl:variable name="output">
|
||||||
@@ -173,7 +181,7 @@
|
|||||||
</xsl:if>
|
</xsl:if>
|
||||||
<xsl:if test="key('bison:ruleByRhs', @name)">
|
<xsl:if test="key('bison:ruleByRhs', @name)">
|
||||||
<xsl:if test="key('bison:ruleByLhs', @name)">
|
<xsl:if test="key('bison:ruleByLhs', @name)">
|
||||||
<xsl:text>, </xsl:text>
|
<xsl:text> </xsl:text>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
<xsl:text>on@right:</xsl:text>
|
<xsl:text>on@right:</xsl:text>
|
||||||
<xsl:for-each select="key('bison:ruleByRhs', @name)">
|
<xsl:for-each select="key('bison:ruleByRhs', @name)">
|
||||||
@@ -348,11 +356,11 @@
|
|||||||
<!-- RHS -->
|
<!-- RHS -->
|
||||||
<xsl:for-each select="rhs/*">
|
<xsl:for-each select="rhs/*">
|
||||||
<xsl:if test="position() = $dot + 1">
|
<xsl:if test="position() = $dot + 1">
|
||||||
<xsl:text> .</xsl:text>
|
<xsl:text> •</xsl:text>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
<xsl:apply-templates select="."/>
|
<xsl:apply-templates select="."/>
|
||||||
<xsl:if test="position() = last() and position() = $dot">
|
<xsl:if test="position() = last() and position() = $dot">
|
||||||
<xsl:text> .</xsl:text>
|
<xsl:text> •</xsl:text>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
</xsl:for-each>
|
</xsl:for-each>
|
||||||
<xsl:if test="$lookaheads">
|
<xsl:if test="$lookaheads">
|
||||||
|
|||||||
@@ -384,13 +384,15 @@ print_grammar (FILE *out, int level)
|
|||||||
{
|
{
|
||||||
symbol const *sym = symbols[token_translations[i]];
|
symbol const *sym = symbols[token_translations[i]];
|
||||||
char const *tag = sym->tag;
|
char const *tag = sym->tag;
|
||||||
|
char const *type = sym->content->type_name;
|
||||||
int precedence = sym->content->prec;
|
int precedence = sym->content->prec;
|
||||||
assoc associativity = sym->content->assoc;
|
assoc associativity = sym->content->assoc;
|
||||||
xml_indent (out, level + 2);
|
xml_indent (out, level + 2);
|
||||||
fprintf (out,
|
fprintf (out,
|
||||||
"<terminal symbol-number=\"%d\" token-number=\"%d\""
|
"<terminal symbol-number=\"%d\" token-number=\"%d\""
|
||||||
" name=\"%s\" usefulness=\"%s\"",
|
" name=\"%s\" type=\"%s\" usefulness=\"%s\"",
|
||||||
token_translations[i], i, xml_escape (tag),
|
token_translations[i], i, xml_escape_n (0, tag),
|
||||||
|
type ? xml_escape_n (1, type) : "",
|
||||||
reduce_token_unused_in_grammar (token_translations[i])
|
reduce_token_unused_in_grammar (token_translations[i])
|
||||||
? "unused-in-grammar" : "useful");
|
? "unused-in-grammar" : "useful");
|
||||||
if (precedence)
|
if (precedence)
|
||||||
@@ -407,11 +409,14 @@ print_grammar (FILE *out, int level)
|
|||||||
{
|
{
|
||||||
symbol const *sym = symbols[i];
|
symbol const *sym = symbols[i];
|
||||||
char const *tag = sym->tag;
|
char const *tag = sym->tag;
|
||||||
|
char const *type = sym->content->type_name;
|
||||||
xml_printf (out, level + 2,
|
xml_printf (out, level + 2,
|
||||||
"<nonterminal symbol-number=\"%d\" name=\"%s\""
|
"<nonterminal symbol-number=\"%d\" name=\"%s\""
|
||||||
|
" type=\"%s\""
|
||||||
" usefulness=\"%s\"/>",
|
" usefulness=\"%s\"/>",
|
||||||
i, xml_escape (tag),
|
i, xml_escape_n (0, tag),
|
||||||
reduce_nonterminal_useless_in_grammar (symbols[i]->content)
|
type ? xml_escape_n (1, type) : "",
|
||||||
|
reduce_nonterminal_useless_in_grammar (sym->content)
|
||||||
? "useless-in-grammar" : "useful");
|
? "useless-in-grammar" : "useful");
|
||||||
}
|
}
|
||||||
xml_puts (out, level + 1, "</nonterminals>");
|
xml_puts (out, level + 1, "</nonterminals>");
|
||||||
|
|||||||
@@ -1169,11 +1169,16 @@ m4_define([AT_BISON_CHECK_XML],
|
|||||||
[cp xml-tests/test.output expout]
|
[cp xml-tests/test.output expout]
|
||||||
AT_CHECK([[$XSLTPROC \
|
AT_CHECK([[$XSLTPROC \
|
||||||
`]]AT_SET_ENV[[ bison --print-datadir`/xslt/xml2text.xsl \
|
`]]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]
|
[sort xml-tests/test.gv > expout]
|
||||||
AT_CHECK([[$XSLTPROC \
|
AT_CHECK([[$XSLTPROC \
|
||||||
`]]AT_SET_ENV[[ bison --print-datadir`/xslt/xml2dot.xsl \
|
`]]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]
|
[rm -rf xml-tests expout]
|
||||||
AT_RESTORE_SPECIAL_FILES
|
AT_RESTORE_SPECIAL_FILES
|
||||||
[fi]])
|
[fi]])
|
||||||
|
|||||||
@@ -764,24 +764,24 @@ AT_CHECK([[sed -e 's/bison-xml-report version="[^"]*"/bison-xml-report version="
|
|||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
<terminals>
|
<terminals>
|
||||||
<terminal symbol-number="0" token-number="0" name=""end of file"" 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" usefulness="useful"/>
|
<terminal symbol-number="1" token-number="256" name="error" type="" usefulness="useful"/>
|
||||||
<terminal symbol-number="3" token-number="258" name="":="" usefulness="useful"/>
|
<terminal symbol-number="3" token-number="258" name="":="" type="" usefulness="useful"/>
|
||||||
<terminal symbol-number="4" token-number="259" name=""incr"" usefulness="useful"/>
|
<terminal symbol-number="4" token-number="259" name=""incr"" type="" usefulness="useful"/>
|
||||||
<terminal symbol-number="5" token-number="260" name=""identifier"" 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"" usefulness="useful"/>
|
<terminal symbol-number="6" token-number="261" name=""number"" type="int" usefulness="useful"/>
|
||||||
<terminal symbol-number="7" token-number="262" name=""("" usefulness="useful"/>
|
<terminal symbol-number="7" token-number="262" name=""("" type="" usefulness="useful"/>
|
||||||
<terminal symbol-number="8" token-number="263" name="")"" usefulness="useful"/>
|
<terminal symbol-number="8" token-number="263" name="")"" type="" usefulness="useful"/>
|
||||||
</terminals>
|
</terminals>
|
||||||
<nonterminals>
|
<nonterminals>
|
||||||
<nonterminal symbol-number="9" name="$accept" usefulness="useful"/>
|
<nonterminal symbol-number="9" name="$accept" type="" usefulness="useful"/>
|
||||||
<nonterminal symbol-number="10" name="unit" usefulness="useful"/>
|
<nonterminal symbol-number="10" name="unit" type="" usefulness="useful"/>
|
||||||
<nonterminal symbol-number="11" name="assignments" usefulness="useful"/>
|
<nonterminal symbol-number="11" name="assignments" type="" usefulness="useful"/>
|
||||||
<nonterminal symbol-number="12" name="assignment" usefulness="useful"/>
|
<nonterminal symbol-number="12" name="assignment" type="" usefulness="useful"/>
|
||||||
<nonterminal symbol-number="13" name="id" usefulness="useful"/>
|
<nonterminal symbol-number="13" name="id" type="std::string" usefulness="useful"/>
|
||||||
<nonterminal symbol-number="14" name="exp" usefulness="useful"/>
|
<nonterminal symbol-number="14" name="exp" type="int" usefulness="useful"/>
|
||||||
<nonterminal symbol-number="15" name="@1" usefulness="useful"/>
|
<nonterminal symbol-number="15" name="@1" type="int" usefulness="useful"/>
|
||||||
<nonterminal symbol-number="16" name="@2" usefulness="useful"/>
|
<nonterminal symbol-number="16" name="@2" type="int" usefulness="useful"/>
|
||||||
</nonterminals>
|
</nonterminals>
|
||||||
</grammar>
|
</grammar>
|
||||||
|
|
||||||
@@ -1881,16 +1881,16 @@ AT_CHECK([[sed -e 's/bison-xml-report version="[^"]*"/bison-xml-report version="
|
|||||||
</rule>
|
</rule>
|
||||||
</rules>
|
</rules>
|
||||||
<terminals>
|
<terminals>
|
||||||
<terminal symbol-number="0" token-number="0" name="$end" usefulness="useful"/>
|
<terminal symbol-number="0" token-number="0" name="$end" type="" usefulness="useful"/>
|
||||||
<terminal symbol-number="1" token-number="256" name="error" usefulness="useful"/>
|
<terminal symbol-number="1" token-number="256" name="error" type="" usefulness="useful"/>
|
||||||
<terminal symbol-number="3" token-number="258" name=""+"" usefulness="useful" prec="1" assoc="left"/>
|
<terminal symbol-number="3" token-number="258" name=""+"" type="" usefulness="useful" prec="1" assoc="left"/>
|
||||||
<terminal symbol-number="4" token-number="259" name=""⊕"" usefulness="useful"/>
|
<terminal symbol-number="4" token-number="259" name=""⊕"" type="" usefulness="useful"/>
|
||||||
<terminal symbol-number="5" token-number="260" name=""number"" usefulness="useful"/>
|
<terminal symbol-number="5" token-number="260" name=""number"" type="" usefulness="useful"/>
|
||||||
<terminal symbol-number="6" token-number="261" name=""Ñùṃéℝô"" usefulness="useful"/>
|
<terminal symbol-number="6" token-number="261" name=""Ñùṃéℝô"" type="" usefulness="useful"/>
|
||||||
</terminals>
|
</terminals>
|
||||||
<nonterminals>
|
<nonterminals>
|
||||||
<nonterminal symbol-number="7" name="$accept" usefulness="useful"/>
|
<nonterminal symbol-number="7" name="$accept" type="" usefulness="useful"/>
|
||||||
<nonterminal symbol-number="8" name="exp" usefulness="useful"/>
|
<nonterminal symbol-number="8" name="exp" type="" usefulness="useful"/>
|
||||||
</nonterminals>
|
</nonterminals>
|
||||||
</grammar>
|
</grammar>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user