22 lines
516 B
Plaintext
22 lines
516 B
Plaintext
procedure main()
|
|
s := "a!===b=!=c"
|
|
# just list the tokens
|
|
every writes(multisplit(s,["==", "!=", "="])," ") | write()
|
|
|
|
# list tokens and indices
|
|
every ((p := "") ||:= t := multisplit(s,sep := ["==", "!=", "="])) | break write() do
|
|
if t == !sep then writes(t," (",*p+1-*t,") ") else writes(t," ")
|
|
|
|
end
|
|
|
|
procedure multisplit(s,L)
|
|
s ? while not pos(0) do {
|
|
t := =!L | 1( arb(), match(!L)|pos(0) )
|
|
suspend t
|
|
}
|
|
end
|
|
|
|
procedure arb()
|
|
suspend .&subject[.&pos:&pos <- &pos to *&subject + 1]
|
|
end
|