4
***********************************************************************
5
FUNNELWEB MANUAL WEB PAGE
6
=========================
7
Copyright (c) Ross N. Williams 1992,1999. All rights reserved.
9
Permission is granted to redistribute and use this manual in
10
any medium, with or without modification, provided that all
11
notices (including, without limitation, the copyright
12
notice, this permission notice, any record of modification,
13
and all legal notices) are preserved on all copies, that all
14
modifications are clearly marked, and that modified versions
15
are not represented as the original version unless all the
16
modifications since the manual's original release by Ross N.
17
Williams (www.ross.net) consist of translations or other
18
transformations that alter only the manual's form, not its
19
content. THIS MANUAL IS PROVIDED "AS IS" AND WITHOUT ANY
20
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
21
LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND
22
FITNESS FOR A PARTICULAR PURPOSE. TO THE EXTENT PERMITTED BY
23
LAW THERE IS ABSOLUTELY NO WARRANTY.
25
***********************************************************************
29
<TITLE>6 Tangle</TITLE>
30
<STYLE TYPE="text/css"> <!-- A {text-decoration: none} // --> </STYLE>
32
<BODY BACKGROUND="binary/background.gif"
41
<TD WIDTH="130" VALIGN="top">
42
<IMG SRC="binary/d_clear.gif" ALT="" WIDTH="130" HEIGHT="1"><BR>
47
<A HREF="http://www.ross.net/"
49
onClick="window.open('','rosshome','location,status,menubar,scrollbars,resizable',false).focus(); return true;"
51
<IMG SRC="binary/rossnet_logo.gif"
52
WIDTH="64" HEIGHT="32"
53
BORDER="0" ALT="RossNet"
54
HSPACE="0" VSPACE="1"></A><BR>
57
<A HREF="../index.shtml"
59
onClick="window.open('','funnelweb','location,status,menubar,scrollbars,resizable',false).focus(); return true;"
61
<IMG SRC="binary/linklogo.gif"
62
WIDTH="64" HEIGHT="32"
63
BORDER="0" ALT="FunnelWeb"
64
HSPACE="0" VSPACE="1"></A><BR>
66
<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD BGCOLOR="#000000">
67
<A HREF="../tutorial/index.html"
68
TARGET="funnelwebtutorial"
69
onClick="window.open('','funnelwebtutorial','location,status,menubar,scrollbars,resizable',false).focus(); return true;"
70
><FONT COLOR="#FFFFFF"><B>Tutorial</B></FONT></A><BR>
72
<A HREF="../developer/index.html"
73
TARGET="funnelwebdeveloper"
74
onClick="window.open('','funnelwebdeveloper','location,status,menubar,scrollbars,resizable',false).focus(); return true;"
75
><FONT COLOR="#FFFFFF"><B>Developer</B></FONT></A><BR>
77
<A HREF="index.html"><FONT COLOR="#FFFFFF"><B>Reference</B></FONT></A><BR>
78
<A HREF="intro.html"><FONT COLOR="#FFFFFF">1 Introduction</FONT></A><BR>
79
<A HREF="interface.html"><FONT COLOR="#FFFFFF">2 Interface</FONT></A><BR>
80
<A HREF="scanner.html"><FONT COLOR="#FFFFFF">3 Scanner</FONT></A><BR>
81
<A HREF="parser.html"><FONT COLOR="#FFFFFF">4 Parser</FONT></A><BR>
82
<A HREF="analyser.html"><FONT COLOR="#FFFFFF">5 Analyser</FONT></A><BR>
83
<A HREF="tangle.html"><FONT COLOR="#FFFFFF">6 Tangle</FONT></A><BR>
84
<A HREF="weave.html"><FONT COLOR="#FFFFFF">7 Weave</FONT></A><BR>
85
<A HREF="shell.html"><FONT COLOR="#FFFFFF">8 Shell</FONT></A><BR>
86
<A HREF="commands.html"><FONT COLOR="#FFFFFF">9 Commands</FONT></A><BR>
87
<A HREF="glossary.html"><FONT COLOR="#FFFFFF">10 Glossary</FONT></A><BR>
88
<A HREF="references.html"><FONT COLOR="#FFFFFF">11 References</FONT></A><BR>
91
<A HREF="search.html"><FONT COLOR="#FFFFFF"><B>SEARCH</B></FONT></A><BR>
97
<TD WIDTH="360" VALIGN="top">
101
<A HREF="index.html"><IMG SRC="binary/title.gif"
102
WIDTH="316" HEIGHT="24"
103
BORDER="0" ALT="FunnelWeb Reference Manual"
104
HSPACE="0" VSPACE="0"></A>
105
<P><FONT SIZE="5">6 Tangle</FONT><BR>
109
<P>If the scanner, parser, and analyser have successfully
110
(i.e. with no errors, severe errors, or fatal errors)
111
completed, and the Tangle option (<SAMP>+O</SAMP>) is turned on
112
(it is by default), then the Tangle component of FunnelWeb
113
is invoked to generate the product files specified in the
114
<SAMP>@O</SAMP> macros of the input file.
116
<P>The operation of Tangle is very simple. Each
117
<SAMP>@O</SAMP> macro is expanded and written to a file of the
118
same name. As there are a finite number of macros, and the
119
analyser guarantees that the macro structure is
120
non-recursive, Tangle is guaranteed to terminate.
122
<P>Three remaining points are worth mentioning.
127
<LI> Tangle expands macros using blank indentation unless
128
the user has specified otherwise in an indentation pragma in
131
<LI> Tangle keeps track of the length of the lines that
132
it is writing and issues an error if any line of any product
133
file that it generates is longer than the maximum. The
134
maximum is the minimum of a value defaulted or specified in
135
the input file, and the value (if any) provided by the
136
<SAMP>+w</SAMP> command line argument.
138
<LI> If there is more than one macro definition of the
139
same name, then each such definition must have a different
140
library level (<SAMP>@L</SAMP>). Tangle uses the macro
141
definition that has the lowest library level and ignores
142
the others completely.
146
<P><BR><FONT SIZE="4"><STRONG>Memory Use During Tangling</STRONG></FONT><BR>
148
<P>When FunnelWeb executes, it reads each input file (the
149
main input file and any include files) into memory where
150
they are kept for the duration of the run. This means that
151
there must be room in memory for all of the input files.
152
This approach is necessary to support FunnelWeb's
153
unrestricted forward referencing.
155
<P>In contrast, there is no requirement that there be
156
enough memory to hold the product files, as these are
157
written to disk sequentially during their expansion.
158
Furthermore, FunnelWeb does not expand the values of actual
159
parameters in memory.
161
<P>This means that, so long as the input files fit in
162
memory, your product files can be arbitrarily large. You can
163
also pass arbitrary large arguments to FunnelWeb macros.
169
<TD ALIGN="left" VALIGN="bottom"><A HREF="analyser.html"><IMG SRC="binary/fw_left.gif" HEIGHT="32" WIDTH="32" BORDER="0" ALT="Prev"></A></TD>
170
<TD ALIGN="center" VALIGN="bottom"><A HREF="index.html"><IMG SRC="binary/fw_up.gif" HEIGHT="32" WIDTH="32" BORDER="0" ALT="Up"></A></TD>
171
<TD ALIGN="right" VALIGN="bottom"><A HREF="weave.html"><IMG SRC="binary/fw_right.gif" HEIGHT="32" WIDTH="32" BORDER="0" ALT="Next"></A></TD>
180
<A HREF="mailto:webmaster@ross.net">Webmaster</A>
181
<A HREF="copyright.html">Copyright © Ross N. Williams 1992,1999. All rights reserved.</A><BR>
193
<!-- *********************************************************************** -->
194
<!-- End Of A FunnelWeb Manual Web Page (www.ross.net/funnelweb/) -->
195
<!-- *********************************************************************** -->