This file is indexed.

/usr/share/doc/bison-doc/html/Precedence-Decl.html is in bison-doc 1:2.5-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
<html lang="en">
<head>
<title>Precedence Decl - Bison 2.5</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Bison 2.5">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Declarations.html#Declarations" title="Declarations">
<link rel="prev" href="Token-Decl.html#Token-Decl" title="Token Decl">
<link rel="next" href="Union-Decl.html#Union-Decl" title="Union Decl">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This manual (14 May 2011) is for GNU Bison (version
2.5), the GNU parser generator.

Copyright (C) 1988-1993, 1995, 1998-2011 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.''
   -->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
--></style>
</head>
<body>
<div class="node">
<a name="Precedence-Decl"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Union-Decl.html#Union-Decl">Union Decl</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Token-Decl.html#Token-Decl">Token Decl</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Declarations.html#Declarations">Declarations</a>
<hr>
</div>

<h4 class="subsection">3.7.3 Operator Precedence</h4>

<p><a name="index-precedence-declarations-173"></a><a name="index-declaring-operator-precedence-174"></a><a name="index-operator-precedence_002c-declaring-175"></a>
Use the <code>%left</code>, <code>%right</code> or <code>%nonassoc</code> declaration to
declare a token and specify its precedence and associativity, all at
once.  These are called <dfn>precedence declarations</dfn>. 
See <a href="Precedence.html#Precedence">Operator Precedence</a>, for general information on
operator precedence.

   <p>The syntax of a precedence declaration is nearly the same as that of
<code>%token</code>: either

<pre class="example">     %left <var>symbols</var>...
</pre>
   <p class="noindent">or

<pre class="example">     %left &lt;<var>type</var>&gt; <var>symbols</var>...
</pre>
   <p>And indeed any of these declarations serves the purposes of <code>%token</code>. 
But in addition, they specify the associativity and relative precedence for
all the <var>symbols</var>:

     <ul>
<li>The associativity of an operator <var>op</var> determines how repeated uses
of the operator nest: whether &lsquo;<samp><var>x</var> <var>op</var> <var>y</var> <var>op</var>
<var>z</var></samp>&rsquo; is parsed by grouping <var>x</var> with <var>y</var> first or by
grouping <var>y</var> with <var>z</var> first.  <code>%left</code> specifies
left-associativity (grouping <var>x</var> with <var>y</var> first) and
<code>%right</code> specifies right-associativity (grouping <var>y</var> with
<var>z</var> first).  <code>%nonassoc</code> specifies no associativity, which
means that &lsquo;<samp><var>x</var> <var>op</var> <var>y</var> <var>op</var> <var>z</var></samp>&rsquo; is
considered a syntax error.

     <li>The precedence of an operator determines how it nests with other operators. 
All the tokens declared in a single precedence declaration have equal
precedence and nest together according to their associativity. 
When two tokens declared in different precedence declarations associate,
the one declared later has the higher precedence and is grouped first. 
</ul>

   <p>For backward compatibility, there is a confusing difference between the
argument lists of <code>%token</code> and precedence declarations. 
Only a <code>%token</code> can associate a literal string with a token type name. 
A precedence declaration always interprets a literal string as a reference to a
separate token. 
For example:

<pre class="example">     %left  OR "&lt;="         // Does not declare an alias.
     %left  OR 134 "&lt;=" 135 // Declares 134 for OR and 135 for "&lt;=".
</pre>
   </body></html>