public function parse(string $input)
    {
        $pos = 0;
        while (null !== ($match = $this->parseOne($input, $pos))) {
            $pos = $match->nextOffset;
            yield $match->token;
        }
    }