Tutorial Developer Reference 1 Introduction 2 Interface 3 Scanner 4 Parser 5 Analyser 6 Tangle 7 Weave 8 Shell 9 Commands 10 Glossary 11 References SEARCH

4.14 Macros Are Static

In FunnelWeb, the actions of macro definition and macro expansion occur during two separate phases (parser and tangle) and cannot be interleaved. As a result, the FunnelWeb macro facility is completely static. It is not possible for one macro to define another while the first macro is being expanded; each must be defined statically. It is not possible to define a macro to even assist in the definition of other macros. Because the scanner, parser, analyser, and tangler phases are all invoked sequentially, there is no room for feedback of definitions between different levels (e.g. the user cannot define a macro for the `vskip` pragma).

This lack of power is fully intentional. By totally excluding the more incomprehensible ways in which a general purpose macro preprocessor can be used, FunnelWeb provides definite guarantees to the reader of its input files:

- FunnelWeb guarantees that a piece of text does not contain a macro call unless it contains the special character followed by `<` or `#`.
- FunnelWeb allows calls to be made to macros that are defined later in the input file.

Webmaster Copyright © Ross N. Williams 1992,1999. All rights reserved.