/[m4]/m4/doc/m4.texinfo
ViewVC logotype

Diff of /m4/doc/m4.texinfo

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.21 by gary, Sun May 8 00:37:44 2005 UTC revision 1.22 by gary, Thu Jul 7 11:14:21 2005 UTC
# Line 291  applications even to solve simple proble Line 291  applications even to solve simple proble
291  debugging their @code{m4} scripts than doing real work.  Beware that  debugging their @code{m4} scripts than doing real work.  Beware that
292  @code{m4} may be dangerous for the health of compulsive programmers.  @code{m4} may be dangerous for the health of compulsive programmers.
293    
294    
295  @node History  @node History
296  @section Historical references  @section Historical references
297    
 The historical notes included here are fairly incomplete, and not  
 authoritative at all.  Please knowledgeable users help us to more  
 properly write this section.  
   
298  @code{GPM} has been an important ancestor of @code{m4}.  See  @code{GPM} has been an important ancestor of @code{m4}.  See
299  C. Stratchey: ``A General Purpose Macro generator'', Computer Journal  C. Stratchey: ``A General Purpose Macro generator'', Computer Journal
300  8,3 (1965), pp. 225 ff.  @code{GPM} is also succinctly described into  8,3 (1965), pp. 225 ff.  @code{GPM} is also succinctly described into
301  David Gries classic ``Compiler Construction for Digital Computers''.  David Gries classic ``Compiler Construction for Digital Computers''.
302    
303    The classic B. Kernighan and P.J. Plauger: ``Software Tools'',
304    Addison-Wesley, Inc. (1976) describes and implements a Unix
305    macro-processor language, which inspired Dennis Ritchie to write
306    @code{m3}, a macro processor for the AP-3 minicomputer.
307    
308    Kernighan and Ritchie then joined forces to develop the original
309    @code{m4}, as described in ``The M4 Macro Processor'', Bell
310    Laboratories (1977) which had only 21 builtin macros.
311    
312  While @code{GPM} was more @emph{pure}, @code{m4} is meant to deal with  While @code{GPM} was more @emph{pure}, @code{m4} is meant to deal with
313  the true intricacies of real life: macros can be recognized without being  the true intricacies of real life: macros can be recognized without
314  pre-announced, skipping whitespace or end-of-lines is easier, more constructs  being pre-announced, skipping whitespace or end-of-lines is easier,
315  are builtin instead of derived, etc.  more constructs are builtin instead of derived, etc.
316    
317    Originally, the Kernighan and Plauger macro-processor, and then
318    @code{m3} formed the engine for the Rational FORTRAN preprocessor,
319    that is, the @code{Ratfor} equivalent of @code{cpp}.  Later, @code{m4}
320    was used as a frontend for @code{Ratfor}, @code{C} and @code{Cobol}.
321    
322    Rene' Seindal released his implementation of @code{m4}, GNU @code{m4},
323    in 1990, with the aim of removing the artificial limitations in many
324    of the traditional @code{m4}'s: like maximum line length, macro size,
325    number of macros and so on.
326    
327    The late Professor A. Dain Samples described and implemented a further
328    evolution in the form of @code{M5}: ``User's Guide to the M5 Macro
329    Language: 2nd edition'', Electronic Announcement on comp.compilers
330    newsgroup (1992).
331    
332    Francois Pinard took over maintainance of GNU @code{m4} in 1992, until
333    1994 when he released GNU @code{m4} 1.4, which was the stable release
334    for 10 years.  In 2004, Paul Eggert released 1.4.1 and 1.4.2 which
335    addressed some long standing bugs in the venerable 1.4 release.
336    
337    Most recently, in 2005 Gary V. Vaughan collected together the many
338    patches to GNU @code{m4} 1.4 that were floating around the net and
339    released 1.4.3.
340    
 Originally, @code{m4} was the engine for Rational FORTRAN preprocessor,  
 that is, the @code{ratfor} equivalent of @code{cpp}.  
341    
342  @node Invoking m4  @node Invoking m4
343  @section Invoking @code{m4}  @section Invoking @code{m4}

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.22

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26