m4 - macro processor
-PD m4 is based on the macro tool distributed with the software
-tools (VOS) package, and described in the "SOFTWARE TOOLS" and
-"SOFTWARE TOOLS IN PASCAL" books. It has been expanded to include
+PD m4 is based on the macro tool distributed with the software
+tools (VOS) package, and described in the "SOFTWARE TOOLS" and
+"SOFTWARE TOOLS IN PASCAL" books. It has been expanded to include
most of the command set of SysV m4, the standard UN*X macro processor.
Since both PD m4 and UN*X m4 are based on SOFTWARE TOOLS macro,
Implementation Notes:
-[1] PD m4 uses a different (and simpler) stack mechanism than the one
- described in Software Tools and Software Tools in Pascal books.
- The triple stack thing is replaced with a single stack containing
- the call frames and the arguments. Each frame is back-linked to a
- previous stack frame, which enables us to rewind the stack after
- each nested call is completed. Each argument is a character pointer
+[1] PD m4 uses a different (and simpler) stack mechanism than the one
+ described in Software Tools and Software Tools in Pascal books.
+ The triple stack thing is replaced with a single stack containing
+ the call frames and the arguments. Each frame is back-linked to a
+ previous stack frame, which enables us to rewind the stack after
+ each nested call is completed. Each argument is a character pointer
to the beginning of the argument string within the string space.
The only exceptions to this are (*) arg 0 and arg 1, which are
the macro definition and macro name strings, stored dynamically