X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/blobdiff_plain/cc194c5674544a1747739776e8911bde7245b0d6..4afad3d8f675d4c7d767e86520a3c2eda3d56658:/usr.bin/m4/NOTES diff --git a/usr.bin/m4/NOTES b/usr.bin/m4/NOTES index d60f80eb57..e2da04b207 100644 --- a/usr.bin/m4/NOTES +++ b/usr.bin/m4/NOTES @@ -1,8 +1,8 @@ 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, @@ -31,12 +31,12 @@ References: 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