bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 08/10] html: don't define several times the same anchors


From: Akim Demaille
Subject: [PATCH 08/10] html: don't define several times the same anchors
Date: Sat, 11 Jul 2020 12:55:26 +0200

Currently when we output useless rules, they appear before the
grammar, but using the same invocation.  As a result, the anchor is
defined twice, and the wrong one, being first, is honored.

* data/xslt/xml2xhtml.xsl (rule): Take a new 'anchor' parameter to
decide whether being an anchor, or a target.
Let it be true when output the grammar.
* tests/report.at: Adjust.
---
 data/xslt/xml2xhtml.xsl | 34 ++++++++++++++++++++--------------
 tests/report.at         | 38 +++++++++++++++++++-------------------
 2 files changed, 39 insertions(+), 33 deletions(-)

diff --git a/data/xslt/xml2xhtml.xsl b/data/xslt/xml2xhtml.xsl
index b5aeba94..706ff997 100644
--- a/data/xslt/xml2xhtml.xsl
+++ b/data/xslt/xml2xhtml.xsl
@@ -227,6 +227,7 @@
   <xsl:text>&#10;</xsl:text>
   <p class="pre">
     <xsl:call-template name="style-rule-set">
+      <xsl:with-param name="anchor" select="'true'" />
       <xsl:with-param
         name="rule-set" select="rules/rule[@usefulness!='useless-in-grammar']"
       />
@@ -238,9 +239,11 @@
 </xsl:template>
 
 <xsl:template name="style-rule-set">
+  <xsl:param name="anchor"/>
   <xsl:param name="rule-set"/>
   <xsl:for-each select="$rule-set">
     <xsl:apply-templates select=".">
+      <xsl:with-param name="anchor" select="$anchor"/>
       <xsl:with-param name="pad" select="'3'"/>
       <xsl:with-param name="prev-lhs">
         <xsl:if test="position()>1">
@@ -488,7 +491,12 @@
   </xsl:apply-templates>
 </xsl:template>
 
+<!--
+anchor = 'true': define as an <a> anchor.
+itemset = 'true': show the items.
+ -->
 <xsl:template match="rule">
+  <xsl:param name="anchor"/>
   <xsl:param name="itemset"/>
   <xsl:param name="pad"/>
   <xsl:param name="prev-lhs"/>
@@ -499,20 +507,13 @@
     <xsl:text>&#10;</xsl:text>
   </xsl:if>
 
-  <xsl:if test="$itemset != 'true'">
-    <a>
-      <xsl:attribute name="name">
-        <xsl:value-of select="concat('rule_', @number)"/>
-      </xsl:attribute>
-    </a>
-  </xsl:if>
   <xsl:text>  </xsl:text>
 
   <xsl:choose>
-    <xsl:when test="$itemset = 'true'">
+    <xsl:when test="$anchor = 'true'">
       <a>
-        <xsl:attribute name="href">
-          <xsl:value-of select="concat('#rule_', @number)"/>
+        <xsl:attribute name="name">
+          <xsl:value-of select="concat('rule_', @number)"/>
         </xsl:attribute>
         <xsl:call-template name="lpad">
           <xsl:with-param name="str" select="string(@number)"/>
@@ -521,10 +522,15 @@
       </a>
     </xsl:when>
     <xsl:otherwise>
-      <xsl:call-template name="lpad">
-        <xsl:with-param name="str" select="string(@number)"/>
-        <xsl:with-param name="pad" select="number($pad)"/>
-      </xsl:call-template>
+      <a>
+        <xsl:attribute name="href">
+          <xsl:value-of select="concat('#rule_', @number)"/>
+        </xsl:attribute>
+        <xsl:call-template name="lpad">
+          <xsl:with-param name="str" select="string(@number)"/>
+          <xsl:with-param name="pad" select="number($pad)"/>
+        </xsl:call-template>
+      </a>
     </xsl:otherwise>
   </xsl:choose>
   <xsl:text> </xsl:text>
diff --git a/tests/report.at b/tests/report.at
index 2250abbb..7c3a1690 100644
--- a/tests/report.at
+++ b/tests/report.at
@@ -1205,25 +1205,25 @@ if test x"$XSLTPROC" != x""; then
 
 <h2><a name="grammar" id="grammar"></a> Grammar</h2>
 <p class="pre">
-<a name="rule_0" id="rule_0"></a>    0 <span class="i">$accept</span> → <span 
class="i">unit</span> <b>"end of file"</b>
+  <a name="rule_0" id="rule_0">  0</a> <span class="i">$accept</span> → <span 
class="i">unit</span> <b>"end of file"</b>
 
-<a name="rule_1" id="rule_1"></a>    1 <span class="i">unit</span> → <span 
class="i">assignments</span> <span class="i">exp</span>
+  <a name="rule_1" id="rule_1">  1</a> <span class="i">unit</span> → <span 
class="i">assignments</span> <span class="i">exp</span>
 
-<a name="rule_2" id="rule_2"></a>    2 <span class="i">assignments</span> → 
%empty
-<a name="rule_3" id="rule_3"></a>    3             | <span 
class="i">assignments</span> <span class="i">assignment</span>
+  <a name="rule_2" id="rule_2">  2</a> <span class="i">assignments</span> → 
%empty
+  <a name="rule_3" id="rule_3">  3</a>             | <span 
class="i">assignments</span> <span class="i">assignment</span>
 
-<a name="rule_4" id="rule_4"></a>    4 <span class="i">assignment</span> → 
<span class="i">id</span> <b>":="</b> <span class="i">exp</span>
+  <a name="rule_4" id="rule_4">  4</a> <span class="i">assignment</span> → 
<span class="i">id</span> <b>":="</b> <span class="i">exp</span>
 
-<a name="rule_5" id="rule_5"></a>    5 <span class="i">id</span> → 
<b>"identifier"</b>
+  <a name="rule_5" id="rule_5">  5</a> <span class="i">id</span> → 
<b>"identifier"</b>
 
-<a name="rule_6" id="rule_6"></a>    6 <span class="i">@1</span> → %empty
+  <a name="rule_6" id="rule_6">  6</a> <span class="i">@1</span> → %empty
 
-<a name="rule_7" id="rule_7"></a>    7 <span class="i">@2</span> → %empty
+  <a name="rule_7" id="rule_7">  7</a> <span class="i">@2</span> → %empty
 
-<a name="rule_8" id="rule_8"></a>    8 <span class="i">exp</span> → 
<b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span 
class="i">@2</span> <span class="i">exp</span>
-<a name="rule_9" id="rule_9"></a>    9     | <b>"("</b> <span 
class="i">exp</span> <b>")"</b>
-<a name="rule_10" id="rule_10"></a>   10     | <b>"identifier"</b>
-<a name="rule_11" id="rule_11"></a>   11     | <b>"number"</b>
+  <a name="rule_8" id="rule_8">  8</a> <span class="i">exp</span> → 
<b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span 
class="i">@2</span> <span class="i">exp</span>
+  <a name="rule_9" id="rule_9">  9</a>     | <b>"("</b> <span 
class="i">exp</span> <b>")"</b>
+  <a name="rule_10" id="rule_10"> 10</a>     | <b>"identifier"</b>
+  <a name="rule_11" id="rule_11"> 11</a>     | <b>"number"</b>
 </p>
 
 <h3><a name="terminals" id="terminals"></a> Terminals, with rules where they 
appear</h3>
@@ -2158,7 +2158,7 @@ if test x"$XSLTPROC" != x""; then
 <h3><a name="rules_useless_in_grammar" id="rules_useless_in_grammar"></a> 
Rules useless in grammar</h3>
 <h2><a name="rules_useless_in_parser" id="rules_useless_in_parser"></a> Rules 
useless in parser due to conflicts</h2>
 <p class="pre">
-<a name="rule_3" id="rule_3"></a>    3 <span class="i">exp</span> → <span 
class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
+  <a href="#rule_3">  3</a> <span class="i">exp</span> → <span 
class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
 </p>
 
 <h2><a name="conflicts" id="conflicts"></a> Conflicts</h2>
@@ -2169,13 +2169,13 @@ if test x"$XSLTPROC" != x""; then
 
 </p><h2><a name="grammar" id="grammar"></a> Grammar</h2>
 <p class="pre">
-<a name="rule_0" id="rule_0"></a>    0 <span class="i">$accept</span> → <span 
class="i">exp</span> <b>$end</b>
+  <a name="rule_0" id="rule_0">  0</a> <span class="i">$accept</span> → <span 
class="i">exp</span> <b>$end</b>
 
-<a name="rule_1" id="rule_1"></a>    1 <span class="i">exp</span> → <span 
class="i">exp</span> <b>"⊕"</b> <span class="i">exp</span>
-<a name="rule_2" id="rule_2"></a>    2     | <span class="i">exp</span> 
<b>"+"</b> <span class="i">exp</span>
-<a name="rule_3" id="rule_3"></a>    3     | <span class="i">exp</span> 
<b>"+"</b> <span class="i">exp</span>
-<a name="rule_4" id="rule_4"></a>    4     | <b>"number"</b>
-<a name="rule_5" id="rule_5"></a>    5     | <b>"Ñùṃéℝô"</b>
+  <a name="rule_1" id="rule_1">  1</a> <span class="i">exp</span> → <span 
class="i">exp</span> <b>"⊕"</b> <span class="i">exp</span>
+  <a name="rule_2" id="rule_2">  2</a>     | <span class="i">exp</span> 
<b>"+"</b> <span class="i">exp</span>
+  <a name="rule_3" id="rule_3">  3</a>     | <span class="i">exp</span> 
<b>"+"</b> <span class="i">exp</span>
+  <a name="rule_4" id="rule_4">  4</a>     | <b>"number"</b>
+  <a name="rule_5" id="rule_5">  5</a>     | <b>"Ñùṃéℝô"</b>
 </p>
 
 <h3><a name="terminals" id="terminals"></a> Terminals, with rules where they 
appear</h3>
-- 
2.27.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]