This file is indexed.

/usr/share/doc/bison-doc/html/Printer-Decl.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
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
<!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: Printer Decl</title>

<meta name="description" content="Bison 3.0.4: Printer Decl">
<meta name="keywords" content="Bison 3.0.4: Printer Decl">
<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="Declarations.html#Declarations" rel="up" title="Declarations">
<link href="Expect-Decl.html#Expect-Decl" rel="next" title="Expect Decl">
<link href="Destructor-Decl.html#Destructor-Decl" rel="prev" title="Destructor Decl">
<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="Printer-Decl"></a>
<div class="header">
<p>
Next: <a href="Expect-Decl.html#Expect-Decl" accesskey="n" rel="next">Expect Decl</a>, Previous: <a href="Destructor-Decl.html#Destructor-Decl" accesskey="p" rel="prev">Destructor Decl</a>, Up: <a href="Declarations.html#Declarations" accesskey="u" rel="up">Declarations</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="Printing-Semantic-Values"></a>
<h4 class="subsection">3.7.7 Printing Semantic Values</h4>
<a name="index-printing-semantic-values"></a>
<a name="index-_0025printer"></a>
<a name="index-_003c_002a_003e-1"></a>
<a name="index-_003c_003e-1"></a>
<p>When run-time traces are enabled (see <a href="Tracing.html#Tracing">Tracing Your Parser</a>),
the parser reports its actions, such as reductions.  When a symbol involved
in an action is reported, only its kind is displayed, as the parser cannot
know how semantic values should be formatted.
</p>
<p>The <code>%printer</code> directive defines code that is called when a symbol is
reported.  Its syntax is the same as <code>%destructor</code> (see <a href="Destructor-Decl.html#Destructor-Decl">Freeing Discarded Symbols</a>).
</p>
<dl>
<dt><a name="index-_0025printer-1"></a>Directive: <strong>%printer</strong> <em>{ <var>code</var> } <var>symbols</var></em></dt>
<dd><a name="index-_0025printer-2"></a>
<a name="index-yyoutput"></a>
<p>Invoke the braced <var>code</var> whenever the parser displays one of the
<var>symbols</var>.  Within <var>code</var>, <code>yyoutput</code> denotes the output stream
(a <code>FILE*</code> in C, and an <code>std::ostream&amp;</code> in C++), <code>$$</code> (or
<code>$&lt;<var>tag</var>&gt;$</code>) designates the semantic value associated with the
symbol, and <code>@$</code> its location.  The additional parser parameters are
also available (see <a href="Parser-Function.html#Parser-Function">The Parser Function
<code>yyparse</code></a>).
</p>
<p>The <var>symbols</var> are defined as for <code>%destructor</code> (see <a href="Destructor-Decl.html#Destructor-Decl">Freeing Discarded Symbols</a>.): they can be per-type (e.g.,
&lsquo;<samp>&lt;ival&gt;</samp>&rsquo;), per-symbol (e.g., &lsquo;<samp>exp</samp>&rsquo;, &lsquo;<samp>NUM</samp>&rsquo;, &lsquo;<samp>&quot;float&quot;</samp>&rsquo;),
typed per-default (i.e., &lsquo;<samp>&lt;*&gt;</samp>&rsquo;, or untyped per-default (i.e.,
&lsquo;<samp>&lt;&gt;</samp>&rsquo;).
</p></dd></dl>

<p>For example:
</p>
<div class="example">
<pre class="example">%union { char *string; }
%token &lt;string&gt; STRING1 STRING2
%type  &lt;string&gt; string1 string2
%union { char character; }
%token &lt;character&gt; CHR
%type  &lt;character&gt; chr
%token TAGLESS

%printer { fprintf (yyoutput, &quot;'%c'&quot;, $$); } &lt;character&gt;
%printer { fprintf (yyoutput, &quot;&amp;%p&quot;, $$); } &lt;*&gt;
%printer { fprintf (yyoutput, &quot;\&quot;%s\&quot;&quot;, $$); } STRING1 string1
%printer { fprintf (yyoutput, &quot;&lt;&gt;&quot;); } &lt;&gt;
</pre></div>

<p>guarantees that, when the parser print any symbol that has a semantic type
tag other than <code>&lt;character&gt;</code>, it display the address of the semantic
value by default.  However, when the parser displays a <code>STRING1</code> or a
<code>string1</code>, it formats it as a string in double quotes.  It performs
only the second <code>%printer</code> in this case, so it prints only once.
Finally, the parser print &lsquo;<samp>&lt;&gt;</samp>&rsquo; for any symbol, such as <code>TAGLESS</code>,
that has no semantic type tag.  See <a href="Mfcalc-Traces.html#Mfcalc-Traces">Enabling Debug Traces
for <code>mfcalc</code></a>, for a complete example.
</p>


<hr>
<div class="header">
<p>
Next: <a href="Expect-Decl.html#Expect-Decl" accesskey="n" rel="next">Expect Decl</a>, Previous: <a href="Destructor-Decl.html#Destructor-Decl" accesskey="p" rel="prev">Destructor Decl</a>, Up: <a href="Declarations.html#Declarations" accesskey="u" rel="up">Declarations</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>