def peek(self) -> str:
        """Return the next character without advancing offset.

        Raises:
            EndOfInput: If past the end of `self.input`.
        """
        try:
            return self.input[self.offset]
        except IndexError:
            raise EndOfInput(self)