]>
Commit | Line | Data |
---|---|---|
21f1b063 JD |
1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | ||
3 | <!-- | |
4 | bison.xsl - common templates for Bison XSLT. | |
fc8b70bf WP |
5 | $Id$ |
6 | ||
21f1b063 JD |
7 | Copyright (C) 2007 Free Software Foundation, Inc. |
8 | ||
9 | This file is part of Bison, the GNU Compiler Compiler. | |
10 | ||
11 | This program is free software: you can redistribute it and/or modify | |
12 | it under the terms of the GNU General Public License as published by | |
13 | the Free Software Foundation, either version 3 of the License, or | |
14 | (at your option) any later version. | |
15 | ||
16 | This program is distributed in the hope that it will be useful, | |
17 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | GNU General Public License for more details. | |
20 | ||
21 | You should have received a copy of the GNU General Public License | |
22 | along with this program. If not, see <http://www.gnu.org/licenses/>. | |
23 | --> | |
24 | ||
25 | <xsl:stylesheet version="1.0" | |
26 | xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | |
27 | xmlns:bison="http://www.gnu.org/software/bison/"> | |
28 | ||
fc8b70bf WP |
29 | <xsl:key name="bison:ruleNumber" |
30 | match="/bison-xml-report/grammar/rules/rule" | |
31 | use="@number"/> | |
32 | ||
21f1b063 JD |
33 | <!-- For the specified state, output: #sr-conflicts,#rr-conflicts --> |
34 | <xsl:template match="state" mode="bison:count-conflicts"> | |
35 | <xsl:variable name="transitions" select="actions/transitions"/> | |
36 | <xsl:variable name="reductions" select="actions/reductions"/> | |
37 | <xsl:variable | |
38 | name="terminals" | |
39 | select=" | |
40 | $transitions/transition[@type='shift']/@symbol | |
41 | | $reductions/reduction/@symbol | |
42 | " | |
43 | /> | |
44 | <xsl:variable name="conflict-data"> | |
45 | <xsl:for-each select="$terminals"> | |
46 | <xsl:variable name="name" select="."/> | |
47 | <xsl:if test="generate-id($terminals[. = $name][1]) = generate-id(.)"> | |
48 | <xsl:variable | |
49 | name="shift-count" | |
50 | select="count($transitions/transition[@symbol=$name])" | |
51 | /> | |
52 | <xsl:variable | |
53 | name="reduce-count" | |
54 | select="count($reductions/reduction[@symbol=$name])" | |
55 | /> | |
56 | <xsl:if test="$shift-count > 0 and $reduce-count > 0"> | |
57 | <xsl:text>s</xsl:text> | |
58 | </xsl:if> | |
59 | <xsl:if test="$reduce-count > 1"> | |
60 | <xsl:text>r</xsl:text> | |
61 | </xsl:if> | |
62 | </xsl:if> | |
63 | </xsl:for-each> | |
64 | </xsl:variable> | |
65 | <xsl:value-of select="string-length(translate($conflict-data, 'r', ''))"/> | |
66 | <xsl:text>,</xsl:text> | |
67 | <xsl:value-of select="string-length(translate($conflict-data, 's', ''))"/> | |
68 | </xsl:template> | |
69 | ||
70 | </xsl:stylesheet> |