This file is indexed.

/usr/share/doc/fweb/html-info/Preprocessing.html is in fweb-doc 1.62-13.

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
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>FWEB: Preprocessing</title>

<meta name="description" content="FWEB: Preprocessing">
<meta name="keywords" content="FWEB: Preprocessing">
<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="Concept-index.html#Concept-index" rel="index" title="Concept index">
<link href="Parameter-index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Macros.html#Macros" rel="up" title="Macros">
<link href="Languages.html#Languages" rel="next" title="Languages">
<link href="Macros-and-formatting.html#Macros-and-formatting" rel="prev" title="Macros and formatting">
<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.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; 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="Preprocessing"></a>
<div class="header">
<p>
Previous: <a href="Macros-and-formatting.html#Macros-and-formatting" accesskey="p" rel="prev">Macros and formatting</a>, Up: <a href="Macros.html#Macros" accesskey="u" rel="up">Macros</a> &nbsp; [<a href="Parameter-index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-index.html#Concept-index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>

<a name="Preprocessing-1"></a>
<h3 class="section">7.3 Preprocessing</h3>

<a name="index-Macros_002c-preprocessing"></a>
<a name="index-Preprocessing"></a>
<p>Generally, the <small>FWEB</small> preprocessor commands follow a syntax identical
to their C/C++ counterparts.  The one exception is the &lsquo;<samp>@#line</samp>&rsquo;
command.  Whereas the C command takes a line number and file name as
arguments, the <small>FWEB</small> command takes no arguments; its expansion
automatically inserts the current line number and file name.  This
command should be necessary only in rare circumstances.  One of those
involves situations in which an <small>FWEB</small> macro expands to more than one
output line; see <a href="Debugging-with-macros.html#Debugging-with-macros">Debugging with macros</a>.
</p>
<p>The <small>FWEB</small> preprocessor commands may appear in either the definition or the
code parts.  But <em>BEWARE:  No matter where they appear, they are expanded
during INPUT, not output.</em>  (This is probably a design flaw.)  For more
discussion, see <a href="FWEB-macros.html#FWEB-macros">FWEB macros</a>.
</p>
<a name="index-_0040_0023line"></a>
<a name="index-_0040_0023define"></a>
<a name="index-_0040_0023undef"></a>
<a name="index-_0040_0023ifdef"></a>
<a name="index-_0040_0023ifndef"></a>
<a name="index-_0040_0023if"></a>
<a name="index-_0040_0023elif"></a>
<a name="index-_0040_0023endif"></a>

<p>The syntax of each command is as follows:
</p>
<blockquote>
<dl compact="compact">
<dt><code>@#line</code></dt>
<dd><p>&mdash; Insert a <code>#line</code> command.
</p>
</dd>
<dt><code>@#define <var>identifier</var></code></dt>
<dd><p>&mdash; Define an FWEB macro; equivalent to &lsquo;<samp>@m</samp>&rsquo;.
</p></dd>
<dt><code>@#undef <var>identifier</var></code></dt>
<dd><p>&mdash; Undefine an FWEB macro.
</p>
</dd>
<dt><code>@#ifdef <var>identifier</var></code></dt>
<dd><p>&mdash; Is FWEB macro defined?  Equivalent to &lsquo;<samp>@#if&nbsp;defined&nbsp;identifier</samp>&rsquo;<!-- /@w -->.
</p></dd>
<dt><code>@#ifndef <var>identifier</var></code></dt>
<dd><p>&mdash; Is FWEB macro not defined?  Equivalent to &lsquo;<samp>@#if&nbsp;!defined&nbsp;identifier</samp>&rsquo;<!-- /@w -->.
</p>
</dd>
<dt><code>@#if <i>expression</i></code></dt>
<dt><code>@#elif <i>expression</i></code></dt>
<dt><code>@#else</code></dt>
<dt><code>@#endif</code></dt>
</dl>
</blockquote>

<p>In the &lsquo;<samp>@#if</samp>&rsquo; statement, the <i>expression</i> may contain <small>FWEB</small>
macros, but must ultimately evaluate to a number.  If that number is
zero, the expression is false; otherwise, it is true.
</p>
<a name="index-Expression-evaluation"></a>
<p>The <i>expression</i> following constructions such as &lsquo;<samp>@#if</samp>&rsquo; is
evaluated by a built-in expression evaluator that can also be used for
other purposes, such as in macro expansion.  Its behavior is again
motivated by expression 
evaluation in ANSI C; it is not quite as general, but should be more than
adequate.  (One design flaw that will be fixed someday is that the order
of expression evaluation is not necessarily left-to-right, as it is in C.)
It supports both integer and floating-point arithmetic (with type
promotion from integer to floating-point if necessary), and the ANSI
<code>defined</code> operator. Operators with the highest precedence 
(see table below) are evaluated first; as usual, parentheses override the
natural order of evaluation. The unary operator <code>defined</code>
has the highest
precedence; all the other unary operators have the next highest (and equal)
precedence; then come the binary operators. When the operator exists in C,
the action taken by <small>FWEB</small> is precisely that that the C compiler would take.
Arithmetic is done in either <b>long</b> or <b>double</b> variables, as
implemented by the C compiler that compiled <small>FTANGLE</small>.  (This was the
easy choice, not necessarily the most desirable one.)
</p>
<p>The operators, listed from  highest precedence  to lowest, are as
follows
</p>


<hr>
<div class="header">
<p>
Previous: <a href="Macros-and-formatting.html#Macros-and-formatting" accesskey="p" rel="prev">Macros and formatting</a>, Up: <a href="Macros.html#Macros" accesskey="u" rel="up">Macros</a> &nbsp; [<a href="Parameter-index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-index.html#Concept-index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>