|
|
1.1 root 1: .pa 1
2: .he 'M6 (I)'11/15/72'M6 (I)'
3: .ti 0
4: NAME m6 -- general purpose macro processor
5: .sp
6: .ti 0
7: SYNOPSIS m6__
8: [ -d__ arg1 ] [ arg2 [ arg3 ] ]
9: .sp
10: .ti 0
11: DESCRIPTION m6__
12: takes input from file arg2 (or standard input if arg2 is missing)
13: and places output on file arg3 (or standard output).
14: A working file of definitions, "m.def",
15: is initialized from file arg1 if that is supplied.
16: M6 differs from the standard [1] in these
17: respects:
18: .sp
19: #trace:, #source: and #end:
20: are not defined.
21: .sp
22: #meta,arg1,arg2: transfers the role of metacharacter
23: arg1 to character arg2. If two metacharacters become identical
24: thereby, the outcome of further processing is not guaranteed.
25: For example, to make []{} play the
26: roles of #:<> type
27: .sp
28: .in+5
29: \\\#meta,<\\\#>,[:
30: .br
31: [meta,<:>,]:
32: .br
33: [meta,[substr,<<>>,1,1;,{]
34: .br
35: [meta,[substr,{{>>,2,1;,}]
36: .in-5
37: .sp
38: #del,arg1: deletes the definition of macro arg1.
39: .sp
40: #save: and #rest: save and restore the definition table together with
41: the current metacharacters on file
42: m.def.
43: .sp
44: #def,arg1,arg2,arg3: works as in the standard with the extension
45: that an integer may be
46: supplied to arg3 to cause the new macro to perform the
47: action of a specified builtin before its replacement text is evaluated.
48: Thus all builtins
49: except #def: can be retrieved even after deletion.
50: Codes for arg3 are:
51: .sp
52: .in+5
53: .nf
54: 0 - no function
55: 1,2,3,4,5,6 - gt,eq,ge,lt,ne,le
56: 7,8 - seq,sne
57: 9,10,11,12,13 - add,sub,mpy,div,exp
58: 20 - if
59: 21,22 - def,copy
60: 23 - meta
61: 24 - size
62: 25 - substr
63: 26,27 - go,gobk
64: 28 - del
65: 29 - dnl
66: 30,31 - save,rest
67: .fi
68: .in-5
69: .sp
70: .ti 0
71: FILES m.def--working file of definitions
72: .br
73: /usr/lang/mdir/m6a--m6 processor proper (/usr/bin/m6 is only an initializer)
74: .br
75: /usr/lang/mdir/m6b--default initialization for m.def
76: .br
77: /bin/cp--used for copying initial value of m.def
78: .sp
79: .ti 0
80: SEE ALSO [1] A. D. Hall,
81: The M6 Macroprocessor, Bell Telephone Laboratories, 1969
82: .sp
83: .ti 0
84: DIAGNOSTICS "err"
85: -- a bug, an unknown builtin or a bad definition table
86: .br
87: "oprd"--can't open input or initial definitions
88: .br
89: "opwr"--can't open output
90: .br
91: "ova" -- overflow of nested arguments
92: .br
93: "ovc" -- overflow of calls
94: .br
95: "ovd" -- overflow of definitions
96: .br
97: "Try again" -- no process available for copying m.def
98: .br
99: .sp
100: .ti 0
101: BUGS Characters in internal tables are stored
102: one per word.
103: They really should be packed to improve capacity.
104: For want of space (and because of unpacked formats) no file arguments
105: have been provided to #save: or #rest:,
106: and no check is made on the actual opening of file m.def.
107: Again to save space,
108: garbage collection makes calls on #save: and #rest: and so overwrites
109: m.def.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.