So far we have seen how to read individual tokens, or read a sequence of parsed objects until a delimiter. It is also possible to read raw tokens from the input and perform custom processing.
It reads a list of vocabularies terminated by ;. However, the vocabulary names do not name words, except by coincidence; so parse-until cannot be used here. Instead, a set of lower-level combinators can be used: