summaryrefslogtreecommitdiffstats
path: root/gnuwin32/bin/data/xslt/bison.xsl
diff options
context:
space:
mode:
authorAndrew Knight <andrew.knight@intopalo.com>2015-03-26 06:14:16 +0200
committerJani Heikkinen <jani.heikkinen@theqtcompany.com>2015-04-01 04:27:00 +0000
commit98c4f1bbebfb3cc6d8e031d36fd1da3c19e634fb (patch)
treeb5ddf692ef89527861efd25bcd9b54aed94dca49 /gnuwin32/bin/data/xslt/bison.xsl
parent8ad3df2f5d5e93ea8b6e9b823a83e9738f3bf489 (diff)
Upgrade win_flex/win_bison to 2.5.5 (bison 3.0)
This version is required by upstream ANGLE. win_bison conveniently uses a different executable name as the existing bison copy, avoiding conflicts. Change-Id: I2897ce97aef6795933d3ab8b5570a8494a55523e Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'gnuwin32/bin/data/xslt/bison.xsl')
-rw-r--r--gnuwin32/bin/data/xslt/bison.xsl105
1 files changed, 105 insertions, 0 deletions
diff --git a/gnuwin32/bin/data/xslt/bison.xsl b/gnuwin32/bin/data/xslt/bison.xsl
new file mode 100644
index 00000000..10e3305b
--- /dev/null
+++ b/gnuwin32/bin/data/xslt/bison.xsl
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ bison.xsl - common templates for Bison XSLT.
+
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
+
+ This file is part of Bison, the GNU Compiler Compiler.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ -->
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:bison="http://www.gnu.org/software/bison/">
+
+<xsl:key
+ name="bison:symbolByName"
+ match="/bison-xml-report/grammar/nonterminals/nonterminal"
+ use="@name"
+/>
+<xsl:key
+ name="bison:symbolByName"
+ match="/bison-xml-report/grammar/terminals/terminal"
+ use="@name"
+/>
+<xsl:key
+ name="bison:ruleByNumber"
+ match="/bison-xml-report/grammar/rules/rule"
+ use="@number"
+/>
+<xsl:key
+ name="bison:ruleByLhs"
+ match="/bison-xml-report/grammar/rules/rule[
+ @usefulness != 'useless-in-grammar']"
+ use="lhs"
+/>
+<xsl:key
+ name="bison:ruleByRhs"
+ match="/bison-xml-report/grammar/rules/rule[
+ @usefulness != 'useless-in-grammar']"
+ use="rhs/symbol"
+/>
+
+<!-- For the specified state, output: #sr-conflicts,#rr-conflicts -->
+<xsl:template match="state" mode="bison:count-conflicts">
+ <xsl:variable name="transitions" select="actions/transitions"/>
+ <xsl:variable name="reductions" select="actions/reductions"/>
+ <xsl:variable
+ name="terminals"
+ select="
+ $transitions/transition[@type='shift']/@symbol
+ | $reductions/reduction/@symbol
+ "
+ />
+ <xsl:variable name="conflict-data">
+ <xsl:for-each select="$terminals">
+ <xsl:variable name="name" select="."/>
+ <xsl:if test="generate-id($terminals[. = $name][1]) = generate-id(.)">
+ <xsl:variable
+ name="shift-count"
+ select="count($transitions/transition[@symbol=$name])"
+ />
+ <xsl:variable
+ name="reduce-count"
+ select="count($reductions/reduction[@symbol=$name])"
+ />
+ <xsl:if test="$shift-count > 0 and $reduce-count > 0">
+ <xsl:text>s</xsl:text>
+ </xsl:if>
+ <xsl:if test="$reduce-count > 1">
+ <xsl:text>r</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:value-of select="string-length(translate($conflict-data, 'r', ''))"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="string-length(translate($conflict-data, 's', ''))"/>
+</xsl:template>
+
+<xsl:template name="space">
+ <xsl:param name="repeat">0</xsl:param>
+ <xsl:param name="fill" select="' '"/>
+ <xsl:if test="number($repeat) &gt;= 1">
+ <xsl:call-template name="space">
+ <xsl:with-param name="repeat" select="$repeat - 1"/>
+ <xsl:with-param name="fill" select="$fill"/>
+ </xsl:call-template>
+ <xsl:value-of select="$fill"/>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>