GNU m4
A simple macro-procesor
Edition 1.3, for m4 version 1.3
September 1994
by Ren'e Seindal
Introduction and preliminaries
Introduction to
m4
Historical references
Invoking
m4
Problems and bugs
Using this manual
Lexical and syntactic conventions
Names
Quoted strings
Other tokens
Comments
How to invoke macros
Macro invocation
Preventing macro invocation
Macro arguments
Quoting macro arguments
Macro expansion
How to define new macros
Defining a macro
Arguments to macros
Special arguments to macros
Deleting a macro
Renaming macros
Temporarily redefining macros
Indirect call of macros
Indirect call of builtins
Conditionals, loops and recursion
Testing macro definitions
Comparing strings
Loops and recursion
How to debug macros and input
Displaying macro definitions
Tracing macro calls
Controlling debugging output
Saving debugging output
Input control
Deleting whitespace in input
Changing the quote characters
Changing comment delimiters
Changing the lexical structure of words
Saving input
File inclusion
Including named files
Searching for include files
Diverting and undiverting output
Diverting output
Undiverting output
Diversion numbers
Discarding diverted text
Macros for text handling
Calculating length of strings
Searching for substrings
Searching for regular expressions
Extracting substrings
Translating characters
Substituting text by regular expression
Formatted output
Macros for doing arithmetic
Decrement and increment operators
Evaluating integer expressions
Running UNIX commands
Executing simple commands
Reading the output of commands
Exit codes
Making names for temporary files
Miscellaneous builtin macros
Printing error messages
Exiting from
m4
Fast loading of frozen states
Compatibility with other versions of
m4
Extensions in GNU
m4
Facilities in System V
m4
not in GNU
m4
Other incompatibilities
Concept index
Macro index