M6(VI) 2/19/74 M6(VI)
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
standard 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
associated 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;,}]
[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.