1*cda5da8dSAndroid Build Coastguard Worker<?xml version="1.0" encoding="UTF-8"?> 2*cda5da8dSAndroid Build Coastguard Worker 3*cda5da8dSAndroid Build Coastguard Worker<!-- 4*cda5da8dSAndroid Build Coastguard Worker xml2html.xsl - transform Bison XML Report into XHTML. 5*cda5da8dSAndroid Build Coastguard Worker 6*cda5da8dSAndroid Build Coastguard Worker Copyright (C) 2007-2015, 2018-2021 Free Software Foundation, Inc. 7*cda5da8dSAndroid Build Coastguard Worker 8*cda5da8dSAndroid Build Coastguard Worker This file is part of Bison, the GNU Compiler Compiler. 9*cda5da8dSAndroid Build Coastguard Worker 10*cda5da8dSAndroid Build Coastguard Worker This program is free software: you can redistribute it and/or modify 11*cda5da8dSAndroid Build Coastguard Worker it under the terms of the GNU General Public License as published by 12*cda5da8dSAndroid Build Coastguard Worker the Free Software Foundation, either version 3 of the License, or 13*cda5da8dSAndroid Build Coastguard Worker (at your option) any later version. 14*cda5da8dSAndroid Build Coastguard Worker 15*cda5da8dSAndroid Build Coastguard Worker This program is distributed in the hope that it will be useful, 16*cda5da8dSAndroid Build Coastguard Worker but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cda5da8dSAndroid Build Coastguard Worker MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cda5da8dSAndroid Build Coastguard Worker GNU General Public License for more details. 19*cda5da8dSAndroid Build Coastguard Worker 20*cda5da8dSAndroid Build Coastguard Worker You should have received a copy of the GNU General Public License 21*cda5da8dSAndroid Build Coastguard Worker along with this program. If not, see <https://www.gnu.org/licenses/>. 22*cda5da8dSAndroid Build Coastguard Worker 23*cda5da8dSAndroid Build Coastguard Worker Written by Wojciech Polak <[email protected]>. 24*cda5da8dSAndroid Build Coastguard Worker --> 25*cda5da8dSAndroid Build Coastguard Worker 26*cda5da8dSAndroid Build Coastguard Worker<xsl:stylesheet version="1.0" 27*cda5da8dSAndroid Build Coastguard Worker xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 28*cda5da8dSAndroid Build Coastguard Worker xmlns="http://www.w3.org/1999/xhtml" 29*cda5da8dSAndroid Build Coastguard Worker xmlns:bison="https://www.gnu.org/software/bison/"> 30*cda5da8dSAndroid Build Coastguard Worker 31*cda5da8dSAndroid Build Coastguard Worker<xsl:import href="bison.xsl"/> 32*cda5da8dSAndroid Build Coastguard Worker 33*cda5da8dSAndroid Build Coastguard Worker<xsl:output method="xml" encoding="UTF-8" 34*cda5da8dSAndroid Build Coastguard Worker doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 35*cda5da8dSAndroid Build Coastguard Worker doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" 36*cda5da8dSAndroid Build Coastguard Worker indent="yes"/> 37*cda5da8dSAndroid Build Coastguard Worker 38*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="/"> 39*cda5da8dSAndroid Build Coastguard Worker <html> 40*cda5da8dSAndroid Build Coastguard Worker <head> 41*cda5da8dSAndroid Build Coastguard Worker <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> 42*cda5da8dSAndroid Build Coastguard Worker <title> 43*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="bison-xml-report/filename"/> 44*cda5da8dSAndroid Build Coastguard Worker <xsl:text> - GNU Bison XML Automaton Report</xsl:text> 45*cda5da8dSAndroid Build Coastguard Worker </title> 46*cda5da8dSAndroid Build Coastguard Worker <style type="text/css"><![CDATA[ 47*cda5da8dSAndroid Build Coastguard Worker body { 48*cda5da8dSAndroid Build Coastguard Worker font-family: "Nimbus Sans L", Arial, sans-serif; 49*cda5da8dSAndroid Build Coastguard Worker font-size: 9pt; 50*cda5da8dSAndroid Build Coastguard Worker } 51*cda5da8dSAndroid Build Coastguard Worker a:link { 52*cda5da8dSAndroid Build Coastguard Worker color: #1f00ff; 53*cda5da8dSAndroid Build Coastguard Worker text-decoration: none; 54*cda5da8dSAndroid Build Coastguard Worker } 55*cda5da8dSAndroid Build Coastguard Worker a:visited { 56*cda5da8dSAndroid Build Coastguard Worker color: #1f00ff; 57*cda5da8dSAndroid Build Coastguard Worker text-decoration: none; 58*cda5da8dSAndroid Build Coastguard Worker } 59*cda5da8dSAndroid Build Coastguard Worker a:hover { 60*cda5da8dSAndroid Build Coastguard Worker color: red; 61*cda5da8dSAndroid Build Coastguard Worker } 62*cda5da8dSAndroid Build Coastguard Worker #menu a { 63*cda5da8dSAndroid Build Coastguard Worker text-decoration: underline; 64*cda5da8dSAndroid Build Coastguard Worker } 65*cda5da8dSAndroid Build Coastguard Worker .i { 66*cda5da8dSAndroid Build Coastguard Worker font-style: italic; 67*cda5da8dSAndroid Build Coastguard Worker } 68*cda5da8dSAndroid Build Coastguard Worker .pre { 69*cda5da8dSAndroid Build Coastguard Worker font-family: monospace; 70*cda5da8dSAndroid Build Coastguard Worker white-space: pre; 71*cda5da8dSAndroid Build Coastguard Worker } 72*cda5da8dSAndroid Build Coastguard Worker ol.decimal { 73*cda5da8dSAndroid Build Coastguard Worker list-style-type: decimal; 74*cda5da8dSAndroid Build Coastguard Worker } 75*cda5da8dSAndroid Build Coastguard Worker ol.lower-alpha { 76*cda5da8dSAndroid Build Coastguard Worker list-style-type: lower-alpha; 77*cda5da8dSAndroid Build Coastguard Worker } 78*cda5da8dSAndroid Build Coastguard Worker .dot { 79*cda5da8dSAndroid Build Coastguard Worker color: #cc0000; 80*cda5da8dSAndroid Build Coastguard Worker } 81*cda5da8dSAndroid Build Coastguard Worker #footer { 82*cda5da8dSAndroid Build Coastguard Worker margin-top: 3.5em; 83*cda5da8dSAndroid Build Coastguard Worker font-size: 7pt; 84*cda5da8dSAndroid Build Coastguard Worker } 85*cda5da8dSAndroid Build Coastguard Worker ]]></style> 86*cda5da8dSAndroid Build Coastguard Worker </head> 87*cda5da8dSAndroid Build Coastguard Worker <body> 88*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="bison-xml-report"/> 89*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 90*cda5da8dSAndroid Build Coastguard Worker <div id="footer"><hr />This document was generated using 91*cda5da8dSAndroid Build Coastguard Worker <a href="https://www.gnu.org/software/bison/" title="GNU Bison"> 92*cda5da8dSAndroid Build Coastguard Worker GNU Bison <xsl:value-of select="/bison-xml-report/@version"/></a> 93*cda5da8dSAndroid Build Coastguard Worker XML Automaton Report.<br /> 94*cda5da8dSAndroid Build Coastguard Worker <!-- default copying notice --> 95*cda5da8dSAndroid Build Coastguard Worker Verbatim copying and distribution of this entire page is 96*cda5da8dSAndroid Build Coastguard Worker permitted in any medium, provided this notice is preserved.</div> 97*cda5da8dSAndroid Build Coastguard Worker </body> 98*cda5da8dSAndroid Build Coastguard Worker </html> 99*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 100*cda5da8dSAndroid Build Coastguard Worker 101*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="bison-xml-report"> 102*cda5da8dSAndroid Build Coastguard Worker <h1>GNU Bison XML Automaton Report</h1> 103*cda5da8dSAndroid Build Coastguard Worker <p> 104*cda5da8dSAndroid Build Coastguard Worker input grammar: <span class="i"><xsl:value-of select="filename"/></span> 105*cda5da8dSAndroid Build Coastguard Worker </p> 106*cda5da8dSAndroid Build Coastguard Worker 107*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 108*cda5da8dSAndroid Build Coastguard Worker <h3>Table of Contents</h3> 109*cda5da8dSAndroid Build Coastguard Worker <ul id="menu"> 110*cda5da8dSAndroid Build Coastguard Worker <li> 111*cda5da8dSAndroid Build Coastguard Worker <a href="#reductions">Reductions</a> 112*cda5da8dSAndroid Build Coastguard Worker <ul class="lower-alpha"> 113*cda5da8dSAndroid Build Coastguard Worker <li><a href="#nonterminals_useless_in_grammar">Nonterminals useless in grammar</a></li> 114*cda5da8dSAndroid Build Coastguard Worker <li><a href="#terminals_unused_in_grammar">Terminals unused in grammar</a></li> 115*cda5da8dSAndroid Build Coastguard Worker <li><a href="#rules_useless_in_grammar">Rules useless in grammar</a></li> 116*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="grammar/rules/rule[@usefulness='useless-in-parser']"> 117*cda5da8dSAndroid Build Coastguard Worker <li><a href="#rules_useless_in_parser">Rules useless in parser due to conflicts</a></li> 118*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 119*cda5da8dSAndroid Build Coastguard Worker </ul> 120*cda5da8dSAndroid Build Coastguard Worker </li> 121*cda5da8dSAndroid Build Coastguard Worker <li><a href="#conflicts">Conflicts</a></li> 122*cda5da8dSAndroid Build Coastguard Worker <li> 123*cda5da8dSAndroid Build Coastguard Worker <a href="#grammar">Grammar</a> 124*cda5da8dSAndroid Build Coastguard Worker <ul class="lower-alpha"> 125*cda5da8dSAndroid Build Coastguard Worker <li><a href="#grammar">Itemset</a></li> 126*cda5da8dSAndroid Build Coastguard Worker <li><a href="#terminals">Terminal symbols</a></li> 127*cda5da8dSAndroid Build Coastguard Worker <li><a href="#nonterminals">Nonterminal symbols</a></li> 128*cda5da8dSAndroid Build Coastguard Worker </ul> 129*cda5da8dSAndroid Build Coastguard Worker </li> 130*cda5da8dSAndroid Build Coastguard Worker <li><a href="#automaton">Automaton</a></li> 131*cda5da8dSAndroid Build Coastguard Worker </ul> 132*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="grammar" mode="reductions"/> 133*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="grammar" mode="useless-in-parser"/> 134*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="automaton" mode="conflicts"/> 135*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="grammar"/> 136*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="automaton"/> 137*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 138*cda5da8dSAndroid Build Coastguard Worker 139*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="grammar" mode="reductions"> 140*cda5da8dSAndroid Build Coastguard Worker <h2> 141*cda5da8dSAndroid Build Coastguard Worker <a name="reductions"/> 142*cda5da8dSAndroid Build Coastguard Worker <xsl:text> Reductions</xsl:text> 143*cda5da8dSAndroid Build Coastguard Worker </h2> 144*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="nonterminals" mode="useless-in-grammar"/> 145*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="terminals" mode="unused-in-grammar"/> 146*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="rules" mode="useless-in-grammar"/> 147*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 148*cda5da8dSAndroid Build Coastguard Worker 149*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="nonterminals" mode="useless-in-grammar"> 150*cda5da8dSAndroid Build Coastguard Worker <h3> 151*cda5da8dSAndroid Build Coastguard Worker <a name="nonterminals_useless_in_grammar"/> 152*cda5da8dSAndroid Build Coastguard Worker <xsl:text> Nonterminals useless in grammar</xsl:text> 153*cda5da8dSAndroid Build Coastguard Worker </h3> 154*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 155*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="nonterminal[@usefulness='useless-in-grammar']"> 156*cda5da8dSAndroid Build Coastguard Worker <p class="pre"> 157*cda5da8dSAndroid Build Coastguard Worker <xsl:for-each select="nonterminal[@usefulness='useless-in-grammar']"> 158*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 159*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="@name"/> 160*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 161*cda5da8dSAndroid Build Coastguard Worker </xsl:for-each> 162*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 163*cda5da8dSAndroid Build Coastguard Worker </p> 164*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 165*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 166*cda5da8dSAndroid Build Coastguard Worker 167*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="terminals" mode="unused-in-grammar"> 168*cda5da8dSAndroid Build Coastguard Worker <h3> 169*cda5da8dSAndroid Build Coastguard Worker <a name="terminals_unused_in_grammar"/> 170*cda5da8dSAndroid Build Coastguard Worker <xsl:text> Terminals unused in grammar</xsl:text> 171*cda5da8dSAndroid Build Coastguard Worker </h3> 172*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 173*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="terminal[@usefulness='unused-in-grammar']"> 174*cda5da8dSAndroid Build Coastguard Worker <p class="pre"> 175*cda5da8dSAndroid Build Coastguard Worker <xsl:for-each select="terminal[@usefulness='unused-in-grammar']"> 176*cda5da8dSAndroid Build Coastguard Worker <xsl:sort select="@symbol-number" data-type="number"/> 177*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 178*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="@name"/> 179*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 180*cda5da8dSAndroid Build Coastguard Worker </xsl:for-each> 181*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 182*cda5da8dSAndroid Build Coastguard Worker </p> 183*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 184*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 185*cda5da8dSAndroid Build Coastguard Worker 186*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="rules" mode="useless-in-grammar"> 187*cda5da8dSAndroid Build Coastguard Worker <h3> 188*cda5da8dSAndroid Build Coastguard Worker <a name="rules_useless_in_grammar"/> 189*cda5da8dSAndroid Build Coastguard Worker <xsl:text> Rules useless in grammar</xsl:text> 190*cda5da8dSAndroid Build Coastguard Worker </h3> 191*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 192*cda5da8dSAndroid Build Coastguard Worker <xsl:variable name="set" select="rule[@usefulness='useless-in-grammar']"/> 193*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="$set"> 194*cda5da8dSAndroid Build Coastguard Worker <p class="pre"> 195*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="style-rule-set"> 196*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="rule-set" select="$set"/> 197*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 198*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 199*cda5da8dSAndroid Build Coastguard Worker </p> 200*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 201*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 202*cda5da8dSAndroid Build Coastguard Worker 203*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="grammar" mode="useless-in-parser"> 204*cda5da8dSAndroid Build Coastguard Worker <xsl:variable 205*cda5da8dSAndroid Build Coastguard Worker name="set" select="rules/rule[@usefulness='useless-in-parser']" 206*cda5da8dSAndroid Build Coastguard Worker /> 207*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="$set"> 208*cda5da8dSAndroid Build Coastguard Worker <h2> 209*cda5da8dSAndroid Build Coastguard Worker <a name="rules_useless_in_parser"/> 210*cda5da8dSAndroid Build Coastguard Worker <xsl:text> Rules useless in parser due to conflicts</xsl:text> 211*cda5da8dSAndroid Build Coastguard Worker </h2> 212*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 213*cda5da8dSAndroid Build Coastguard Worker <p class="pre"> 214*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="style-rule-set"> 215*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="rule-set" select="$set"/> 216*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 217*cda5da8dSAndroid Build Coastguard Worker </p> 218*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 219*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 220*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 221*cda5da8dSAndroid Build Coastguard Worker 222*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="grammar"> 223*cda5da8dSAndroid Build Coastguard Worker <h2> 224*cda5da8dSAndroid Build Coastguard Worker <a name="grammar"/> 225*cda5da8dSAndroid Build Coastguard Worker <xsl:text> Grammar</xsl:text> 226*cda5da8dSAndroid Build Coastguard Worker </h2> 227*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 228*cda5da8dSAndroid Build Coastguard Worker <p class="pre"> 229*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="style-rule-set"> 230*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="anchor" select="'true'" /> 231*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param 232*cda5da8dSAndroid Build Coastguard Worker name="rule-set" select="rules/rule[@usefulness!='useless-in-grammar']" 233*cda5da8dSAndroid Build Coastguard Worker /> 234*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 235*cda5da8dSAndroid Build Coastguard Worker </p> 236*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 237*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="terminals"/> 238*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="nonterminals"/> 239*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 240*cda5da8dSAndroid Build Coastguard Worker 241*cda5da8dSAndroid Build Coastguard Worker<xsl:template name="style-rule-set"> 242*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="anchor"/> 243*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="rule-set"/> 244*cda5da8dSAndroid Build Coastguard Worker <xsl:for-each select="$rule-set"> 245*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="."> 246*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="anchor" select="$anchor"/> 247*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="pad" select="'3'"/> 248*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="prev-lhs"> 249*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="position()>1"> 250*cda5da8dSAndroid Build Coastguard Worker <xsl:variable name="position" select="position()"/> 251*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="$rule-set[$position - 1]/lhs"/> 252*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 253*cda5da8dSAndroid Build Coastguard Worker </xsl:with-param> 254*cda5da8dSAndroid Build Coastguard Worker </xsl:apply-templates> 255*cda5da8dSAndroid Build Coastguard Worker </xsl:for-each> 256*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 257*cda5da8dSAndroid Build Coastguard Worker 258*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="automaton" mode="conflicts"> 259*cda5da8dSAndroid Build Coastguard Worker <h2> 260*cda5da8dSAndroid Build Coastguard Worker <a name="conflicts"/> 261*cda5da8dSAndroid Build Coastguard Worker <xsl:text> Conflicts</xsl:text> 262*cda5da8dSAndroid Build Coastguard Worker </h2> 263*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 264*cda5da8dSAndroid Build Coastguard Worker <xsl:variable name="conflict-report"> 265*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="state" mode="conflicts"/> 266*cda5da8dSAndroid Build Coastguard Worker </xsl:variable> 267*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="string-length($conflict-report) != 0"> 268*cda5da8dSAndroid Build Coastguard Worker <p class="pre"> 269*cda5da8dSAndroid Build Coastguard Worker <xsl:copy-of select="$conflict-report"/> 270*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 271*cda5da8dSAndroid Build Coastguard Worker </p> 272*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 273*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 274*cda5da8dSAndroid Build Coastguard Worker 275*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="state" mode="conflicts"> 276*cda5da8dSAndroid Build Coastguard Worker <xsl:variable name="conflict-counts"> 277*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="." mode="bison:count-conflicts" /> 278*cda5da8dSAndroid Build Coastguard Worker </xsl:variable> 279*cda5da8dSAndroid Build Coastguard Worker <xsl:variable 280*cda5da8dSAndroid Build Coastguard Worker name="sr-count" select="substring-before($conflict-counts, ',')" 281*cda5da8dSAndroid Build Coastguard Worker /> 282*cda5da8dSAndroid Build Coastguard Worker <xsl:variable 283*cda5da8dSAndroid Build Coastguard Worker name="rr-count" select="substring-after($conflict-counts, ',')" 284*cda5da8dSAndroid Build Coastguard Worker /> 285*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="$sr-count > 0 or $rr-count > 0"> 286*cda5da8dSAndroid Build Coastguard Worker <a> 287*cda5da8dSAndroid Build Coastguard Worker <xsl:attribute name="href"> 288*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat('#state_', @number)"/> 289*cda5da8dSAndroid Build Coastguard Worker </xsl:attribute> 290*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat('State ', @number)"/> 291*cda5da8dSAndroid Build Coastguard Worker </a> 292*cda5da8dSAndroid Build Coastguard Worker <xsl:text> conflicts:</xsl:text> 293*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="$sr-count > 0"> 294*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat(' ', $sr-count, ' shift/reduce')"/> 295*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="$rr-count > 0"> 296*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="(',')"/> 297*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 298*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 299*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="$rr-count > 0"> 300*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat(' ', $rr-count, ' reduce/reduce')"/> 301*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 302*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="' '"/> 303*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 304*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 305*cda5da8dSAndroid Build Coastguard Worker 306*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="grammar/terminals"> 307*cda5da8dSAndroid Build Coastguard Worker <h3> 308*cda5da8dSAndroid Build Coastguard Worker <a name="terminals"/> 309*cda5da8dSAndroid Build Coastguard Worker <xsl:text> Terminals, with rules where they appear</xsl:text> 310*cda5da8dSAndroid Build Coastguard Worker </h3> 311*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 312*cda5da8dSAndroid Build Coastguard Worker <ul> 313*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 314*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="terminal"/> 315*cda5da8dSAndroid Build Coastguard Worker </ul> 316*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 317*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 318*cda5da8dSAndroid Build Coastguard Worker 319*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="grammar/nonterminals"> 320*cda5da8dSAndroid Build Coastguard Worker <h3> 321*cda5da8dSAndroid Build Coastguard Worker <a name="nonterminals"/> 322*cda5da8dSAndroid Build Coastguard Worker <xsl:text> Nonterminals, with rules where they appear</xsl:text> 323*cda5da8dSAndroid Build Coastguard Worker </h3> 324*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 325*cda5da8dSAndroid Build Coastguard Worker <ul> 326*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 327*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates 328*cda5da8dSAndroid Build Coastguard Worker select="nonterminal[@usefulness!='useless-in-grammar']" 329*cda5da8dSAndroid Build Coastguard Worker /> 330*cda5da8dSAndroid Build Coastguard Worker </ul> 331*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 332*cda5da8dSAndroid Build Coastguard Worker 333*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="terminal"> 334*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 335*cda5da8dSAndroid Build Coastguard Worker <li> 336*cda5da8dSAndroid Build Coastguard Worker <b><xsl:value-of select="@name"/></b> 337*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="string-length(@type) != 0"> 338*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat(' <', @type, '>')"/> 339*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 340*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat(' (', @token-number, ')')"/> 341*cda5da8dSAndroid Build Coastguard Worker <xsl:for-each select="key('bison:ruleByRhs', @name)"> 342*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="." mode="number-link"/> 343*cda5da8dSAndroid Build Coastguard Worker </xsl:for-each> 344*cda5da8dSAndroid Build Coastguard Worker </li> 345*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 346*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 347*cda5da8dSAndroid Build Coastguard Worker 348*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="nonterminal"> 349*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 350*cda5da8dSAndroid Build Coastguard Worker <li> 351*cda5da8dSAndroid Build Coastguard Worker <b><xsl:value-of select="@name"/></b> 352*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="string-length(@type) != 0"> 353*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat(' <', @type, '>')"/> 354*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 355*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat(' (', @symbol-number, ')')"/> 356*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 357*cda5da8dSAndroid Build Coastguard Worker <ul> 358*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 359*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="key('bison:ruleByLhs', @name)"> 360*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 361*cda5da8dSAndroid Build Coastguard Worker <li> 362*cda5da8dSAndroid Build Coastguard Worker <xsl:text>on left:</xsl:text> 363*cda5da8dSAndroid Build Coastguard Worker <xsl:for-each select="key('bison:ruleByLhs', @name)"> 364*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="." mode="number-link"/> 365*cda5da8dSAndroid Build Coastguard Worker </xsl:for-each> 366*cda5da8dSAndroid Build Coastguard Worker </li> 367*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 368*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 369*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="key('bison:ruleByRhs', @name)"> 370*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 371*cda5da8dSAndroid Build Coastguard Worker <li> 372*cda5da8dSAndroid Build Coastguard Worker <xsl:text>on right:</xsl:text> 373*cda5da8dSAndroid Build Coastguard Worker <xsl:for-each select="key('bison:ruleByRhs', @name)"> 374*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="." mode="number-link"/> 375*cda5da8dSAndroid Build Coastguard Worker </xsl:for-each> 376*cda5da8dSAndroid Build Coastguard Worker </li> 377*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 378*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 379*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 380*cda5da8dSAndroid Build Coastguard Worker </ul> 381*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 382*cda5da8dSAndroid Build Coastguard Worker </li> 383*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 384*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 385*cda5da8dSAndroid Build Coastguard Worker 386*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="rule" mode="number-link"> 387*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 388*cda5da8dSAndroid Build Coastguard Worker <a> 389*cda5da8dSAndroid Build Coastguard Worker <xsl:attribute name="href"> 390*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat('#rule_', @number)"/> 391*cda5da8dSAndroid Build Coastguard Worker </xsl:attribute> 392*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="@number"/> 393*cda5da8dSAndroid Build Coastguard Worker </a> 394*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 395*cda5da8dSAndroid Build Coastguard Worker 396*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="automaton"> 397*cda5da8dSAndroid Build Coastguard Worker <h2> 398*cda5da8dSAndroid Build Coastguard Worker <a name="automaton"/> 399*cda5da8dSAndroid Build Coastguard Worker <xsl:text> Automaton</xsl:text> 400*cda5da8dSAndroid Build Coastguard Worker </h2> 401*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="state"> 402*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="pad" select="'3'"/> 403*cda5da8dSAndroid Build Coastguard Worker </xsl:apply-templates> 404*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 405*cda5da8dSAndroid Build Coastguard Worker 406*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="automaton/state"> 407*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="pad"/> 408*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 409*cda5da8dSAndroid Build Coastguard Worker <h3> 410*cda5da8dSAndroid Build Coastguard Worker <a> 411*cda5da8dSAndroid Build Coastguard Worker <xsl:attribute name="name"> 412*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat('state_', @number)"/> 413*cda5da8dSAndroid Build Coastguard Worker </xsl:attribute> 414*cda5da8dSAndroid Build Coastguard Worker </a> 415*cda5da8dSAndroid Build Coastguard Worker <xsl:text>State </xsl:text> 416*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="@number"/> 417*cda5da8dSAndroid Build Coastguard Worker </h3> 418*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 419*cda5da8dSAndroid Build Coastguard Worker <p class="pre"> 420*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="itemset/item"> 421*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="pad" select="$pad"/> 422*cda5da8dSAndroid Build Coastguard Worker </xsl:apply-templates> 423*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="actions/transitions"> 424*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="type" select="'shift'"/> 425*cda5da8dSAndroid Build Coastguard Worker </xsl:apply-templates> 426*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="actions/errors"/> 427*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="actions/reductions"/> 428*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="actions/transitions"> 429*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="type" select="'goto'"/> 430*cda5da8dSAndroid Build Coastguard Worker </xsl:apply-templates> 431*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="solved-conflicts"/> 432*cda5da8dSAndroid Build Coastguard Worker </p> 433*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 434*cda5da8dSAndroid Build Coastguard Worker 435*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="actions/transitions"> 436*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="type"/> 437*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="transition[@type = $type]"> 438*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 439*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="transition[@type = $type]"> 440*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="pad"> 441*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="max-width-symbol"> 442*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="node" select="transition[@type = $type]"/> 443*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 444*cda5da8dSAndroid Build Coastguard Worker </xsl:with-param> 445*cda5da8dSAndroid Build Coastguard Worker </xsl:apply-templates> 446*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 447*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 448*cda5da8dSAndroid Build Coastguard Worker 449*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="actions/errors"> 450*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="error"> 451*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 452*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="error"> 453*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="pad"> 454*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="max-width-symbol"> 455*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="node" select="error"/> 456*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 457*cda5da8dSAndroid Build Coastguard Worker </xsl:with-param> 458*cda5da8dSAndroid Build Coastguard Worker </xsl:apply-templates> 459*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 460*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 461*cda5da8dSAndroid Build Coastguard Worker 462*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="actions/reductions"> 463*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="reduction"> 464*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 465*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="reduction"> 466*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="pad"> 467*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="max-width-symbol"> 468*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="node" select="reduction"/> 469*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 470*cda5da8dSAndroid Build Coastguard Worker </xsl:with-param> 471*cda5da8dSAndroid Build Coastguard Worker </xsl:apply-templates> 472*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 473*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 474*cda5da8dSAndroid Build Coastguard Worker 475*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="item"> 476*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="pad"/> 477*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="prev-rule-number" 478*cda5da8dSAndroid Build Coastguard Worker select="preceding-sibling::item[1]/@rule-number"/> 479*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates 480*cda5da8dSAndroid Build Coastguard Worker select="key('bison:ruleByNumber', current()/@rule-number)" 481*cda5da8dSAndroid Build Coastguard Worker > 482*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="itemset" select="'true'"/> 483*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="pad" select="$pad"/> 484*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="prev-lhs" 485*cda5da8dSAndroid Build Coastguard Worker select="key('bison:ruleByNumber', $prev-rule-number)/lhs[text()]" 486*cda5da8dSAndroid Build Coastguard Worker /> 487*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="dot" select="@dot"/> 488*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="lookaheads"> 489*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="lookaheads"/> 490*cda5da8dSAndroid Build Coastguard Worker </xsl:with-param> 491*cda5da8dSAndroid Build Coastguard Worker </xsl:apply-templates> 492*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 493*cda5da8dSAndroid Build Coastguard Worker 494*cda5da8dSAndroid Build Coastguard Worker<!-- 495*cda5da8dSAndroid Build Coastguard Workeranchor = 'true': define as an <a> anchor. 496*cda5da8dSAndroid Build Coastguard Workeritemset = 'true': show the items. 497*cda5da8dSAndroid Build Coastguard Worker --> 498*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="rule"> 499*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="anchor"/> 500*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="itemset"/> 501*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="pad"/> 502*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="prev-lhs"/> 503*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="dot"/> 504*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="lookaheads"/> 505*cda5da8dSAndroid Build Coastguard Worker 506*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="$itemset != 'true' and not($prev-lhs = lhs[text()])"> 507*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 508*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 509*cda5da8dSAndroid Build Coastguard Worker 510*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 511*cda5da8dSAndroid Build Coastguard Worker 512*cda5da8dSAndroid Build Coastguard Worker <xsl:choose> 513*cda5da8dSAndroid Build Coastguard Worker <xsl:when test="$anchor = 'true'"> 514*cda5da8dSAndroid Build Coastguard Worker <a> 515*cda5da8dSAndroid Build Coastguard Worker <xsl:attribute name="name"> 516*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat('rule_', @number)"/> 517*cda5da8dSAndroid Build Coastguard Worker </xsl:attribute> 518*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="lpad"> 519*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="str" select="string(@number)"/> 520*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="pad" select="number($pad)"/> 521*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 522*cda5da8dSAndroid Build Coastguard Worker </a> 523*cda5da8dSAndroid Build Coastguard Worker </xsl:when> 524*cda5da8dSAndroid Build Coastguard Worker <xsl:otherwise> 525*cda5da8dSAndroid Build Coastguard Worker <a> 526*cda5da8dSAndroid Build Coastguard Worker <xsl:attribute name="href"> 527*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat('#rule_', @number)"/> 528*cda5da8dSAndroid Build Coastguard Worker </xsl:attribute> 529*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="lpad"> 530*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="str" select="string(@number)"/> 531*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="pad" select="number($pad)"/> 532*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 533*cda5da8dSAndroid Build Coastguard Worker </a> 534*cda5da8dSAndroid Build Coastguard Worker </xsl:otherwise> 535*cda5da8dSAndroid Build Coastguard Worker </xsl:choose> 536*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 537*cda5da8dSAndroid Build Coastguard Worker 538*cda5da8dSAndroid Build Coastguard Worker <!-- LHS --> 539*cda5da8dSAndroid Build Coastguard Worker <xsl:choose> 540*cda5da8dSAndroid Build Coastguard Worker <xsl:when test="$prev-lhs = lhs[text()]"> 541*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="lpad"> 542*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="str" select="'|'"/> 543*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="pad" select="number(string-length(lhs[text()])) + 2"/> 544*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 545*cda5da8dSAndroid Build Coastguard Worker </xsl:when> 546*cda5da8dSAndroid Build Coastguard Worker <xsl:otherwise> 547*cda5da8dSAndroid Build Coastguard Worker <span class="i"> 548*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="lhs"/> 549*cda5da8dSAndroid Build Coastguard Worker </span> 550*cda5da8dSAndroid Build Coastguard Worker <xsl:text> →</xsl:text> 551*cda5da8dSAndroid Build Coastguard Worker </xsl:otherwise> 552*cda5da8dSAndroid Build Coastguard Worker </xsl:choose> 553*cda5da8dSAndroid Build Coastguard Worker 554*cda5da8dSAndroid Build Coastguard Worker <!-- RHS --> 555*cda5da8dSAndroid Build Coastguard Worker <xsl:for-each select="rhs/*"> 556*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="position() = $dot + 1"> 557*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 558*cda5da8dSAndroid Build Coastguard Worker <span class="dot">•</span> 559*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 560*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="."/> 561*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="position() = last() and position() = $dot"> 562*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 563*cda5da8dSAndroid Build Coastguard Worker <span class="dot">•</span> 564*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 565*cda5da8dSAndroid Build Coastguard Worker </xsl:for-each> 566*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="$lookaheads"> 567*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="$lookaheads"/> 568*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 569*cda5da8dSAndroid Build Coastguard Worker 570*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 571*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 572*cda5da8dSAndroid Build Coastguard Worker 573*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="symbol"> 574*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 575*cda5da8dSAndroid Build Coastguard Worker <xsl:choose> 576*cda5da8dSAndroid Build Coastguard Worker <xsl:when test="name(key('bison:symbolByName', .)) = 'nonterminal'"> 577*cda5da8dSAndroid Build Coastguard Worker <span class="i"><xsl:value-of select="."/></span> 578*cda5da8dSAndroid Build Coastguard Worker </xsl:when> 579*cda5da8dSAndroid Build Coastguard Worker <xsl:otherwise> 580*cda5da8dSAndroid Build Coastguard Worker <b><xsl:value-of select="."/></b> 581*cda5da8dSAndroid Build Coastguard Worker </xsl:otherwise> 582*cda5da8dSAndroid Build Coastguard Worker </xsl:choose> 583*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 584*cda5da8dSAndroid Build Coastguard Worker 585*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="empty"> 586*cda5da8dSAndroid Build Coastguard Worker <xsl:text> %empty</xsl:text> 587*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 588*cda5da8dSAndroid Build Coastguard Worker 589*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="lookaheads"> 590*cda5da8dSAndroid Build Coastguard Worker <xsl:text> [</xsl:text> 591*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="symbol"/> 592*cda5da8dSAndroid Build Coastguard Worker <xsl:text>]</xsl:text> 593*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 594*cda5da8dSAndroid Build Coastguard Worker 595*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="lookaheads/symbol"> 596*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="."/> 597*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="position() != last()"> 598*cda5da8dSAndroid Build Coastguard Worker <xsl:text>, </xsl:text> 599*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 600*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 601*cda5da8dSAndroid Build Coastguard Worker 602*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="transition"> 603*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="pad"/> 604*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 605*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="rpad"> 606*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="str" select="string(@symbol)"/> 607*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="pad" select="number($pad) + 2"/> 608*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 609*cda5da8dSAndroid Build Coastguard Worker <xsl:choose> 610*cda5da8dSAndroid Build Coastguard Worker <xsl:when test="@type = 'shift'"> 611*cda5da8dSAndroid Build Coastguard Worker <a> 612*cda5da8dSAndroid Build Coastguard Worker <xsl:attribute name="href"> 613*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat('#state_', @state)"/> 614*cda5da8dSAndroid Build Coastguard Worker </xsl:attribute> 615*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat('shift, and go to state ', @state)"/> 616*cda5da8dSAndroid Build Coastguard Worker </a> 617*cda5da8dSAndroid Build Coastguard Worker </xsl:when> 618*cda5da8dSAndroid Build Coastguard Worker <xsl:when test="@type = 'goto'"> 619*cda5da8dSAndroid Build Coastguard Worker <a> 620*cda5da8dSAndroid Build Coastguard Worker <xsl:attribute name="href"> 621*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat('#state_', @state)"/> 622*cda5da8dSAndroid Build Coastguard Worker </xsl:attribute> 623*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat('go to state ', @state)"/> 624*cda5da8dSAndroid Build Coastguard Worker </a> 625*cda5da8dSAndroid Build Coastguard Worker </xsl:when> 626*cda5da8dSAndroid Build Coastguard Worker </xsl:choose> 627*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 628*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 629*cda5da8dSAndroid Build Coastguard Worker 630*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="error"> 631*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="pad"/> 632*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 633*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="rpad"> 634*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="str" select="string(@symbol)"/> 635*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="pad" select="number($pad) + 2"/> 636*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 637*cda5da8dSAndroid Build Coastguard Worker <xsl:text>error</xsl:text> 638*cda5da8dSAndroid Build Coastguard Worker <xsl:text> (</xsl:text> 639*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="text()"/> 640*cda5da8dSAndroid Build Coastguard Worker <xsl:text>)</xsl:text> 641*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 642*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 643*cda5da8dSAndroid Build Coastguard Worker 644*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="reduction"> 645*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="pad"/> 646*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 647*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="rpad"> 648*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="str" select="string(@symbol)"/> 649*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="pad" select="number($pad) + 2"/> 650*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 651*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="@enabled = 'false'"> 652*cda5da8dSAndroid Build Coastguard Worker <xsl:text>[</xsl:text> 653*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 654*cda5da8dSAndroid Build Coastguard Worker <xsl:choose> 655*cda5da8dSAndroid Build Coastguard Worker <xsl:when test="@rule = 'accept'"> 656*cda5da8dSAndroid Build Coastguard Worker <xsl:text>accept</xsl:text> 657*cda5da8dSAndroid Build Coastguard Worker </xsl:when> 658*cda5da8dSAndroid Build Coastguard Worker <xsl:otherwise> 659*cda5da8dSAndroid Build Coastguard Worker <a> 660*cda5da8dSAndroid Build Coastguard Worker <xsl:attribute name="href"> 661*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat('#rule_', @rule)"/> 662*cda5da8dSAndroid Build Coastguard Worker </xsl:attribute> 663*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat('reduce using rule ', @rule)"/> 664*cda5da8dSAndroid Build Coastguard Worker </a> 665*cda5da8dSAndroid Build Coastguard Worker <xsl:text> (</xsl:text> 666*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of 667*cda5da8dSAndroid Build Coastguard Worker select="key('bison:ruleByNumber', current()/@rule)/lhs[text()]" 668*cda5da8dSAndroid Build Coastguard Worker /> 669*cda5da8dSAndroid Build Coastguard Worker <xsl:text>)</xsl:text> 670*cda5da8dSAndroid Build Coastguard Worker </xsl:otherwise> 671*cda5da8dSAndroid Build Coastguard Worker </xsl:choose> 672*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="@enabled = 'false'"> 673*cda5da8dSAndroid Build Coastguard Worker <xsl:text>]</xsl:text> 674*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 675*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 676*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 677*cda5da8dSAndroid Build Coastguard Worker 678*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="solved-conflicts"> 679*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="resolution"> 680*cda5da8dSAndroid Build Coastguard Worker <xsl:text> </xsl:text> 681*cda5da8dSAndroid Build Coastguard Worker <xsl:apply-templates select="resolution"/> 682*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 683*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 684*cda5da8dSAndroid Build Coastguard Worker 685*cda5da8dSAndroid Build Coastguard Worker<xsl:template match="resolution"> 686*cda5da8dSAndroid Build Coastguard Worker <xsl:text> Conflict between </xsl:text> 687*cda5da8dSAndroid Build Coastguard Worker <a> 688*cda5da8dSAndroid Build Coastguard Worker <xsl:attribute name="href"> 689*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat('#rule_', @rule)"/> 690*cda5da8dSAndroid Build Coastguard Worker </xsl:attribute> 691*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="concat('rule ',@rule)"/> 692*cda5da8dSAndroid Build Coastguard Worker </a> 693*cda5da8dSAndroid Build Coastguard Worker <xsl:text> and token </xsl:text> 694*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="@symbol"/> 695*cda5da8dSAndroid Build Coastguard Worker <xsl:text> resolved as </xsl:text> 696*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="@type = 'error'"> 697*cda5da8dSAndroid Build Coastguard Worker <xsl:text>an </xsl:text> 698*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 699*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="@type"/> 700*cda5da8dSAndroid Build Coastguard Worker <xsl:text> (</xsl:text> 701*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="."/> 702*cda5da8dSAndroid Build Coastguard Worker <xsl:text>). </xsl:text> 703*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 704*cda5da8dSAndroid Build Coastguard Worker 705*cda5da8dSAndroid Build Coastguard Worker<xsl:template name="max-width-symbol"> 706*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="node"/> 707*cda5da8dSAndroid Build Coastguard Worker <xsl:variable name="longest"> 708*cda5da8dSAndroid Build Coastguard Worker <xsl:for-each select="$node"> 709*cda5da8dSAndroid Build Coastguard Worker <xsl:sort data-type="number" select="string-length(@symbol)" 710*cda5da8dSAndroid Build Coastguard Worker order="descending"/> 711*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="position() = 1"> 712*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="string-length(@symbol)"/> 713*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 714*cda5da8dSAndroid Build Coastguard Worker </xsl:for-each> 715*cda5da8dSAndroid Build Coastguard Worker </xsl:variable> 716*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="$longest"/> 717*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 718*cda5da8dSAndroid Build Coastguard Worker 719*cda5da8dSAndroid Build Coastguard Worker<xsl:template name="lpad"> 720*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="str" select="''"/> 721*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="pad" select="0"/> 722*cda5da8dSAndroid Build Coastguard Worker <xsl:variable name="diff" select="$pad - string-length($str)" /> 723*cda5da8dSAndroid Build Coastguard Worker <xsl:choose> 724*cda5da8dSAndroid Build Coastguard Worker <xsl:when test="$diff < 0"> 725*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="$str"/> 726*cda5da8dSAndroid Build Coastguard Worker </xsl:when> 727*cda5da8dSAndroid Build Coastguard Worker <xsl:otherwise> 728*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="space"> 729*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="repeat" select="$diff"/> 730*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 731*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="$str"/> 732*cda5da8dSAndroid Build Coastguard Worker </xsl:otherwise> 733*cda5da8dSAndroid Build Coastguard Worker </xsl:choose> 734*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 735*cda5da8dSAndroid Build Coastguard Worker 736*cda5da8dSAndroid Build Coastguard Worker<xsl:template name="rpad"> 737*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="str" select="''"/> 738*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="pad" select="0"/> 739*cda5da8dSAndroid Build Coastguard Worker <xsl:variable name="diff" select="$pad - string-length($str)"/> 740*cda5da8dSAndroid Build Coastguard Worker <xsl:choose> 741*cda5da8dSAndroid Build Coastguard Worker <xsl:when test="$diff < 0"> 742*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="$str"/> 743*cda5da8dSAndroid Build Coastguard Worker </xsl:when> 744*cda5da8dSAndroid Build Coastguard Worker <xsl:otherwise> 745*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="$str"/> 746*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="space"> 747*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="repeat" select="$diff"/> 748*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 749*cda5da8dSAndroid Build Coastguard Worker </xsl:otherwise> 750*cda5da8dSAndroid Build Coastguard Worker </xsl:choose> 751*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 752*cda5da8dSAndroid Build Coastguard Worker 753*cda5da8dSAndroid Build Coastguard Worker<xsl:template name="space"> 754*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="repeat">0</xsl:param> 755*cda5da8dSAndroid Build Coastguard Worker <xsl:param name="fill" select="' '"/> 756*cda5da8dSAndroid Build Coastguard Worker <xsl:if test="number($repeat) >= 1"> 757*cda5da8dSAndroid Build Coastguard Worker <xsl:call-template name="space"> 758*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="repeat" select="$repeat - 1"/> 759*cda5da8dSAndroid Build Coastguard Worker <xsl:with-param name="fill" select="$fill"/> 760*cda5da8dSAndroid Build Coastguard Worker </xsl:call-template> 761*cda5da8dSAndroid Build Coastguard Worker <xsl:value-of select="$fill"/> 762*cda5da8dSAndroid Build Coastguard Worker </xsl:if> 763*cda5da8dSAndroid Build Coastguard Worker</xsl:template> 764*cda5da8dSAndroid Build Coastguard Worker 765*cda5da8dSAndroid Build Coastguard Worker</xsl:stylesheet> 766