private void readToken() {
        while (true) {
            prompt();
            String token = _input.findWithinHorizon(TOKEN_PATN, 0);
            if (token == null) {
                token = "*EOF*";
            } else if (token.startsWith("'")) {
                if (token.length() == 1 || !token.endsWith("'")) {
                    throw error("unterminated literal constant");
                }
            } else if (token.startsWith("/*")) {
                if (token.length() < 4 || !token.endsWith("*/")) {
                    throw error("unterminated comment");
                }
                continue;
            } else if (token.endsWith("\n")) {
                _shouldPrompt = true;
                continue;
            }
            _buffer.add(token);
            _continued = !token.equals(";");
            return;
        }
    }