protected char convertEscapes() throws EOFException {
        if (ch == '\\') {
            switch (nextChar()) {
            case 'n':       // Line feed
                return '\n';
            case 't':       // Tab
                return '\t';
            case 'f':       // Form feed
                return '\f';
            case 'r':       // Carriage return
                return '\r';
            case 'b':       // Backspace
                return '\b';
            case '\'': // '
                return '\'';
            case '\"':
                return '"';
            case '0':
                return '\0';
            default:
                error("Invalid escape sequence");
                return 0;
            }
        }
        else {
            return ch;
        }
    }