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