This file is indexed.

/usr/share/doc/bison-doc/html/Actions-and-Locations.html is in bison-doc 1:3.0.2-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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- 
This manual (23 October 2013) is for GNU Bison (version
3.0.2), the GNU parser generator.

Copyright (C) 1988-1993, 1995, 1998-2013 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 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Bison 3.0.2: Actions and Locations</title>

<meta name="description" content="Bison 3.0.2: Actions and Locations">
<meta name="keywords" content="Bison 3.0.2: Actions and Locations">
<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="Tracking-Locations.html#Tracking-Locations" rel="up" title="Tracking Locations">
<link href="Location-Default-Action.html#Location-Default-Action" rel="next" title="Location Default Action">
<link href="Location-Type.html#Location-Type" rel="prev" title="Location Type">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
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" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Actions-and-Locations"></a>
<div class="header">
<p>
Next: <a href="Location-Default-Action.html#Location-Default-Action" accesskey="n" rel="next">Location Default Action</a>, Previous: <a href="Location-Type.html#Location-Type" accesskey="p" rel="prev">Location Type</a>, Up: <a href="Tracking-Locations.html#Tracking-Locations" accesskey="u" rel="up">Tracking Locations</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="Actions-and-Locations-1"></a>
<h4 class="subsection">3.5.2 Actions and Locations</h4>
<a name="index-location-actions"></a>
<a name="index-actions_002c-location"></a>
<a name="index-_0040_0024"></a>
<a name="index-_0040n-2"></a>
<a name="index-_0040name"></a>
<a name="index-_0040_005bname_005d"></a>

<p>Actions are not only useful for defining language semantics, but also for
describing the behavior of the output parser with locations.
</p>
<p>The most obvious way for building locations of syntactic groupings is very
similar to the way semantic values are computed.  In a given rule, several
constructs can be used to access the locations of the elements being matched.
The location of the <var>n</var>th component of the right hand side is
<code>@<var>n</var></code>, while the location of the left hand side grouping is
<code>@$</code>.
</p>
<p>In addition, the named references construct <code>@<var>name</var></code> and
<code>@[<var>name</var>]</code> may also be used to address the symbol locations.
See <a href="Named-References.html#Named-References">Named References</a>, for more information about using the named
references construct.
</p>
<p>Here is a basic example using the default data type for locations:
</p>
<div class="example">
<pre class="example">exp:
  &hellip;
| exp '/' exp
    {
      @$.first_column = @1.first_column;
      @$.first_line = @1.first_line;
      @$.last_column = @3.last_column;
      @$.last_line = @3.last_line;
      if ($3)
        $$ = $1 / $3;
      else
        {
          $$ = 1;
          fprintf (stderr, &quot;%d.%d-%d.%d: division by zero&quot;,
                   @3.first_line, @3.first_column,
                   @3.last_line, @3.last_column);
        }
    }
</pre></div>

<p>As for semantic values, there is a default action for locations that is
run each time a rule is matched.  It sets the beginning of <code>@$</code> to the
beginning of the first symbol, and the end of <code>@$</code> to the end of the
last symbol.
</p>
<p>With this default action, the location tracking can be fully automatic.  The
example above simply rewrites this way:
</p>
<div class="example">
<pre class="example">exp:
  &hellip;
| exp '/' exp
    {
      if ($3)
        $$ = $1 / $3;
      else
        {
          $$ = 1;
          fprintf (stderr, &quot;%d.%d-%d.%d: division by zero&quot;,
                   @3.first_line, @3.first_column,
                   @3.last_line, @3.last_column);
        }
    }
</pre></div>

<a name="index-yylloc-3"></a>
<p>It is also possible to access the location of the lookahead token, if any,
from a semantic action.
This location is stored in <code>yylloc</code>.
See <a href="Action-Features.html#Action-Features">Special Features for Use in Actions</a>.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Location-Default-Action.html#Location-Default-Action" accesskey="n" rel="next">Location Default Action</a>, Previous: <a href="Location-Type.html#Location-Type" accesskey="p" rel="prev">Location Type</a>, Up: <a href="Tracking-Locations.html#Tracking-Locations" accesskey="u" rel="up">Tracking Locations</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>



</body>
</html>