1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
include defs
# maksub --- make substitution string in sub
integer function maksub (arg, from, delim, sub)
character arg (MAXARG), delim, sub (MAXPAT)
integer from
character esc, type
integer i, j, junk
integer addset
j = 1
for (i = from; arg (i) != delim & arg (i) != EOS; i = i + 1)
if (arg (i) == AND) {
junk = addset (DITTO, sub, j, MAXPAT)
junk = addset (0, sub, j, MAXPAT)
}
else if (arg (i) == ESCAPE & type (arg (i + 1)) == DIGIT) {
i = i + 1
junk = addset (DITTO, sub, j, MAXPAT)
junk = addset (arg (i) - DIG0, sub, j, MAXPAT)
}
else
junk = addset (esc (arg, i), sub, j, MAXPAT)
if (arg (i) != delim) # missing delimiter
maksub = ERR
else if (addset (EOS, sub, j, MAXPAT) == NO) # no room
maksub = ERR
else
maksub = i
return
end
|