man(1) Manual page archive


NAME
     m6 - general purpose macroprocessor

SYNOPSIS
     m6 [ name ]

DESCRIPTION
     M6 copies the standard input to the standard output, with
     substitutions for any macro calls that appear.  When a file
     name argument is given, that file is read before the stan-
     dard input.

     The processor is as described in the reference with these
     exceptions:

       #def,arg1,arg2,arg3: causes arg1 to become a macro with
       defining text arg2 and (optional) built-in serial number
       arg3.

       #del,arg1: deletes the definition of macro arg1.

       #end: is not implemented.

       #list,arg1: sends the name of the macro designated by arg1
       to the current destination without recognition of any
       warning characters; arg1 is 1 for the most recently
       defined macro, 2 for the next most recent, and so on.  The
       name is taken to be empty when arg1 doesn't make sense.

       #warn,arg1,arg2: replaces the old warning character arg1
       by the new warning character arg2.

       #quote,arg1: sends the definition text of macro arg1 to
       the current destination without recognition of any warning
       characters.

       #serial,arg1: delivers the built-in serial number associ-
       ated with macro arg1.

       #source,arg1: is not implemented.

       #trace,arg1: with arg1 = `1' causes a reconstruction of
       each later call to be placed on the standard output with a
       call level number; other values of arg1 turn tracing off.

     The built-in `warn' may be used to replace inconvenient
     warning characters.  The example below replaces `#' `:' `<'
     `>' by `['      `]' `{' `}'.

               #warn,<#>,[:
               [warn,<:>,]:
               [warn,[substr,<<>>,1,1;,{]
               [warn,[substr,{{>>,2,1;,}]

 1

               [now,{calls look like this}]

     Every built-in function has a serial number, which specifies
     the action to be performed before the defining text is
     expanded.  The serial numbers are: 1 gt, 2 eq, 3 ge, 4 lt, 5
     ne, 6 le, 7 seq, 8 sne, 9 add, 10 sub, 11 mpy, 12 div, 13
     exp, 20 if, 21 def, 22 copy, 23 warn, 24 size, 25 substr, 26
     go, 27 gobk, 28 del, 29 dnl, 32 quote, 33 serial, 34 list,
     35 trace.  Serial number 0 specifies no built-in action.

SEE ALSO
     A. D. Hall, M6 Reference Manual.  Computer Science Technical
     Report #2, Bell Laboratories, 1969.

DIAGNOSTICS
     Various table overflows and ``impossible'' conditions result
     in comment and dump.  There are no diagnostics for poorly
     formed input.

AUTHOR
     M. D. McIlroy

BUGS
     Provision should be made to extend tables as needed, instead
     of wasting a big fixed core allocation.  You get what the
     PDP11 gives you for arithmetic.

 2