import "io" import "heap" let next(s) be { static { str = nil, pos = 0 }; let begin = -1, c, r, i, n; if numbargs() > 0 /\ s <> nil then { str := s; pos := 0 } while true do { c := byte pos of str; if c <> ' ' then break; pos +:= 1 } if c = 0 then resultis nil; begin := pos; while true do { c := byte pos of str; if c = 0 \/ c = ' ' then break; pos +:= 1 } n := pos - begin + 1; if n <= 0 then resultis nil; r := newvec((n + 3) / 4); i := 0; for j = begin to pos - 1 do { byte i of r := byte j of str; i +:= 1 } byte i of r := 0; resultis r } let start() be { let x = " one two three four five six "; init(); out("from \"%s\" get:\n", x); while true do { let s = next(x); x := nil; if s = nil then break; out(" \"%s\"\n", s); freevec(s) } }