abstract sclass PartialAttractor implements Runnable { VF1 action; LS tok; IntRange matchedRange; public abstract bool find(); // uses tok public void run { callF(action, this); } toString { ret standard_toString(this); } bool acceptFull() { matchedRange = intRange(0, l(tok)); true; } S matchedString() { ret joinSubList(tok, matchedRange); } LS tok() { ret subList(tok, matchedRange); } }