Info Node: (m4.info)Top

CFHT HOME m4.info: Top


up: (dir) next: Preliminaries Back to Software Index

GNU M4
******

This manual (28 February 2011) is for GNU M4 (version 1.4.16), a
package containing an implementation of the m4 macro language.

   Copyright (C) 1989-1994, 2004-2011 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.16/AUTHORS'
and `m4-1.4.16/THANKS' from the GNU M4 distribution.

   This is release 1.4.16.  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