virtual void operator()(std::string const& word) const { operator()(toSlice(word)); }
Slice inputSlice(const_iterator i) const { return toSlice(*pinput, span(i)); }
virtual void operator()(std::string const& word, TokenSpan span) const { operator()(toSlice(word), span); }