@vtnerd I too think the easier to read version is the one with a post-loop check. With that, one can immediately know at a glance that if you get to the check then the input has been consumed already (`current == last`). I would still add a comment explaining why is it needed, like `// some parser may success on current == last (i.e. eoi).`