(m4.info)Top


Next: Preliminaries Up: (dir)
Enter node , (file) or (file)node

GNU M4
******

This manual (31 December 2016) is for GNU M4 (version 1.4.18), a package
containing an implementation of the m4 macro language.

   Copyright (C) 1989-1994, 2004-2014, 2016 Free Software Foundation,
Inc.

     Permission is granted to copy, distribute and/or modify this
     document under the terms of the GNU Free Documentation License,
     Version 1.3 or any later version published by the Free Software
     Foundation; with no Invariant Sections, no Front-Cover Texts, and
     no Back-Cover Texts.  A copy of the license is included in the
     section entitled "GNU Free Documentation License."

   GNU 'm4' is an implementation of the traditional UNIX macro
processor.  It is mostly SVR4 compatible, although it has some
extensions (for example, handling more than 9 positional parameters to
macros).  'm4' also has builtin functions for including files, running
shell commands, doing arithmetic, etc.  Autoconf needs GNU 'm4' for
generating 'configure' scripts, but not for running them.

   GNU 'm4' was originally written by Rene' Seindal, with subsequent
changes by Franc,ois Pinard and other volunteers on the Internet.  All
names and email addresses can be found in the files 'm4-1.4.18/AUTHORS'
and 'm4-1.4.18/THANKS' from the GNU M4 distribution.

   This is release 1.4.18.  It is now considered stable: future releases
in the 1.4.x series are only meant to fix bugs, increase speed, or
improve documentation.  However...

   An experimental feature, which would improve 'm4' usefulness, allows
for changing the syntax for what is a "word" in 'm4'.  You should use:
     ./configure --enable-changeword
if you want this feature compiled in.  The current implementation slows
down 'm4' considerably and is hardly acceptable.  In the future, 'm4'
2.0 will come with a different set of new features that provide similar
capabilities, but without the inefficiencies, so changeword will go away
and _you should not count on it_.

Preliminaries
Introduction and preliminaries
Invoking m4
Invoking 'm4'
Syntax
Lexical and syntactic conventions
Macros
How to invoke macros
Definitions
How to define new macros
Conditionals
Conditionals, loops, and recursion
Debugging
How to debug macros and input
Input Control
Input control
File Inclusion
File inclusion
Diversions
Diverting and undiverting output
Text handling
Macros for text handling
Arithmetic
Macros for doing arithmetic
Shell commands
Macros for running shell commands
Miscellaneous
Miscellaneous builtin macros
Frozen files
Fast loading of frozen state
Compatibility
Compatibility with other versions of 'm4'
Answers
Correct version of some examples
Copying This Package
How to make copies of the overall M4 package
Copying This Manual
How to make copies of this manual
Indices
Indices of concepts and macros
 -- The Detailed Node Listing --

Introduction and preliminaries

Intro
Introduction to 'm4'
History
Historical references
Bugs
Problems and bugs
Manual
Using this manual
Invoking 'm4'

Operation modes
Command line options for operation modes
Preprocessor features
Command line options for preprocessor features
Limits control
Command line options for limits control
Frozen state
Command line options for frozen state
Debugging options
Command line options for debugging
Command line files
Specifying input files on the command line
Lexical and syntactic conventions

Names
Macro names
Quoted strings
Quoting input to 'm4'
Comments
Comments in 'm4' input
Other tokens
Other kinds of input tokens
Input processing
How 'm4' copies input to output
How to invoke macros

Invocation
Macro invocation
Inhibiting Invocation
Preventing macro invocation
Macro Arguments
Macro arguments
Quoting Arguments
On Quoting Arguments to macros
Macro expansion
Expanding macros
How to define new macros

Define
Defining a new macro
Arguments
Arguments to macros
Pseudo Arguments
Special arguments to macros
Undefine
Deleting a macro
Defn
Renaming macros
Pushdef
Temporarily redefining macros
Indir
Indirect call of macros
Builtin
Indirect call of builtins
Conditionals, loops, and recursion

Ifdef
Testing if a macro is defined
Ifelse
If-else construct, or multibranch
Shift
Recursion in 'm4'
Forloop
Iteration by counting
Foreach
Iteration by list contents
Stacks
Working with definition stacks
Composition
Building macros with macros
How to debug macros and input

Dumpdef
Displaying macro definitions
Trace
Tracing macro calls
Debug Levels
Controlling debugging output
Debug Output
Saving debugging output
Input control

Dnl
Deleting whitespace in input
Changequote
Changing the quote characters
Changecom
Changing the comment delimiters
Changeword
Changing the lexical structure of words
M4wrap
Saving text until end of input
File inclusion

Include
Including named files
Search Path
Searching for include files
Diverting and undiverting output

Divert
Diverting output
Undivert
Undiverting output
Divnum
Diversion numbers
Cleardivert
Discarding diverted text
Macros for text handling

Len
Calculating length of strings
Index macro
Searching for substrings
Regexp
Searching for regular expressions
Substr
Extracting substrings
Translit
Translating characters
Patsubst
Substituting text by regular expression
Format
Formatting strings (printf-like)
Macros for doing arithmetic

Incr
Decrement and increment operators
Eval
Evaluating integer expressions
Macros for running shell commands

Platform macros
Determining the platform
Syscmd
Executing simple commands
Esyscmd
Reading the output of commands
Sysval
Exit status
Mkstemp
Making temporary files
Miscellaneous builtin macros

Errprint
Printing error messages
Location
Printing current location
M4exit
Exiting from 'm4'
Fast loading of frozen state

Using frozen files
Using frozen files
Frozen file format
Frozen file format
Compatibility with other versions of 'm4'

Extensions
Extensions in GNU M4
Incompatibilities
Facilities in System V m4 not in GNU M4
Other Incompatibilities
Other incompatibilities
Correct version of some examples

Improved exch
Solution for 'exch'
Improved forloop
Solution for 'forloop'
Improved foreach
Solution for 'foreach'
Improved copy
Solution for 'copy'
Improved m4wrap
Solution for 'm4wrap'
Improved cleardivert
Solution for 'cleardivert'
Improved capitalize
Solution for 'capitalize'
Improved fatal_error
Solution for 'fatal_error'
How to make copies of the overall M4 package

GNU General Public License
License for copying the M4 package
How to make copies of this manual

GNU Free Documentation License
License for copying this manual
Indices of concepts and macros

Macro index
Index for all 'm4' macros
Concept index
Index for many concepts

automatically generated by info2www version 1.2.2.9