3/15/72 M6 (I) NAME m6 -- general purpose macro processor SYNOPSIS m6 [ -d arg1 ] [ arg2 [ arg3 ] ] DESCRIPTION m6 takes input from file arg2 (or standard input if arg2 is missing) and places output on file arg3 (or standard output). A working file of definitions, "m.def", is initialized from file arg1 if that is supplied. M6 differs from the standard [1] in these respects: #trace:, #source: and #end: are not defined. #meta,arg1,arg2: transfers the role of metachar- acter arg1 to character arg2. If two metacharac- ters become identical thereby, the outcome of further processing is not guaranteed. For exam- ple, to make []{} play the roles of #:<> type \#meta,<\#>,[: [meta,<:>,]: [meta,[substr,<<>>,1,1;,{] [meta,[substr,{{>>,2,1;,}] #del,arg1: deletes the definition of macro arg1. #save: and #rest: save and restore the definition table together with the current metacharacters on file m.def. #def,arg1,arg2,arg3: works as in the standard with the extension that an integer may be sup- plied to arg3 to cause the new macro to perform the action of a specified builtin before its re- placement text is evaluated. Thus all builtins except #def: can be retrieved even after dele- tion. Codes for arg3 are: 0 - no function 1,2,3,4,5,6 - gt,eq,ge,lt,ne,le 7,8 - seq,sne 9,10,11,12,13 - add,sub,mpy,div,exp 20 - if 21,22 - def,copy 23 - meta 24 - size 25 - substr 26,27 - go,gobk 28 - del 29 - dnl 30,31 - save,rest FILES m.def--working file of definitions /sys/lang/mdir/m6a--m6 processor proper (/bin/m6 is only an initializer) /sys/lang/mdir/m6b--default initialization for m.def SEE ALSO [1] M6 reference DIAGNOSTICS "err" -- a bug, an unknown builtin or a bad defi- nition table "oprd"--can't open input or initial definitions "opwr"--can't open output "ovc" -- overflow of nested calls "ova" -- overflow of nested arguments "ovd" -- overflow of definitions "rdd" -- can't read definition table "wrd" -- can't write definition table, either on #save: or on garbage collection BUGS Characters in internal tables are stored one per word. They really should be packed to improve capacity. For want of space (and because of un- packed formats) no file arguments have been pro- vided to #save: or #rest: Again to save space, garbage collection makes calls on #save: and #rest: and so overwrites m.def. OWNER doug