This file is indexed.

/usr/share/doc/bison-doc/html/Non-Operators.html is in bison-doc 1:3.0.4-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- 
This manual (22 January 2015) is for GNU Bison (version
3.0.4), the GNU parser generator.

Copyright (C) 1988-1993, 1995, 1998-2015 Free Software
Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with the Front-Cover texts
being "A GNU Manual," and with the Back-Cover Texts as in
(a) below.  A copy of the license is included in the section entitled
"GNU Free Documentation License."

(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
modify this GNU manual.  Buying copies from the FSF
supports it in developing GNU and promoting software
freedom." -->
<!-- Created by GNU Texinfo 6.0, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Bison 3.0.4: Non Operators</title>

<meta name="description" content="Bison 3.0.4: Non Operators">
<meta name="keywords" content="Bison 3.0.4: Non Operators">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Index-of-Terms.html#Index-of-Terms" rel="index" title="Index of Terms">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Precedence.html#Precedence" rel="up" title="Precedence">
<link href="Contextual-Precedence.html#Contextual-Precedence" rel="next" title="Contextual Precedence">
<link href="How-Precedence.html#How-Precedence" rel="prev" title="How Precedence">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space: nowrap}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: serif; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en">
<a name="Non-Operators"></a>
<div class="header">
<p>
Previous: <a href="How-Precedence.html#How-Precedence" accesskey="p" rel="prev">How Precedence</a>, Up: <a href="Precedence.html#Precedence" accesskey="u" rel="up">Precedence</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Terms.html#Index-of-Terms" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Using-Precedence-For-Non-Operators"></a>
<h4 class="subsection">5.3.6 Using Precedence For Non Operators</h4>

<p>Using properly precedence and associativity directives can help fixing
shift/reduce conflicts that do not involve arithmetics-like operators.  For
instance, the &ldquo;dangling <code>else</code>&rdquo; problem (see <a href="Shift_002fReduce.html#Shift_002fReduce">Shift/Reduce Conflicts</a>) can be solved elegantly in two different ways.
</p>
<p>In the present case, the conflict is between the token <code>&quot;else&quot;</code> willing
to be shifted, and the rule &lsquo;<samp>if_stmt: &quot;if&quot; expr &quot;then&quot; stmt</samp>&rsquo;, asking
for reduction.  By default, the precedence of a rule is that of its last
token, here <code>&quot;then&quot;</code>, so the conflict will be solved appropriately
by giving <code>&quot;else&quot;</code> a precedence higher than that of <code>&quot;then&quot;</code>, for
instance as follows:
</p>
<div class="example">
<pre class="example">%precedence &quot;then&quot;
%precedence &quot;else&quot;
</pre></div>

<p>Alternatively, you may give both tokens the same precedence, in which case
associativity is used to solve the conflict.  To preserve the shift action,
use right associativity:
</p>
<div class="example">
<pre class="example">%right &quot;then&quot; &quot;else&quot;
</pre></div>

<p>Neither solution is perfect however.  Since Bison does not provide, so far,
&ldquo;scoped&rdquo; precedence, both force you to declare the precedence
of these keywords with respect to the other operators your grammar.
Therefore, instead of being warned about new conflicts you would be unaware
of (e.g., a shift/reduce conflict due to &lsquo;<samp>if test then 1 else 2 + 3</samp>&rsquo;
being ambiguous: &lsquo;<samp>if test then 1 else (2 + 3)</samp>&rsquo; or &lsquo;<samp>(if test then 1
else 2) + 3</samp>&rsquo;?), the conflict will be already &ldquo;fixed&rdquo;.
</p>



</body>
</html>