|
3.12 Pragma: Indentation When FunnelWeb expands a macro, it can do so in two ways. First it can treat the text it is processing as a one-dimensional stream of text, and merely insert the body of the macro in place of the macro call. Second, it can treat the text of the macro as a two dimensional object and indent each line of the macro body by the amount that the macro call itself was indented. Consider the following macros.
@$@<Loop Structure@>@{@- i=1; while (i<=N) @<Loop body@> endwhile @} @$@<Loop body@>@{@- a[i]:=0; i:=i+1;@} Under the regime of no indentation the loop structure macro expands to:
i=1; while (i<=N) a[i]:=0; i:=i+1; endwhile Under the regime of blank indentation the loop structure macro expands to:
i=1; while (i<=N) a[i]:=0; i:=i+1; endwhile The indentation pragma determines which of these two regimes will be used to expand the macros when constructing the product files. The syntax of the pragma is:
pragma_ident = ps "indentation" s "=" s ("blank" | "none") Its two forms look like this:
@p indentation = blank @p indentation = none In the current version of FunnelWeb, the indentation regime is an attribute that is attached to an entire run of Tangle; it is not possible to bind it to particular product files or to particular macros. As a result, it doesn't matter where indentation pragmas occur in the input file or how many there are so long as they are all the same. By default FunnelWeb uses blank indentation.
Webmaster Copyright © Ross N. Williams 1992,1999. All rights reserved. |