"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AcessoIntervaloVariavel = void 0;
/**
 * Construto para acesso de intervalos (fatiamento/slicing) em vetores.
 * Ex: vetor[1:4], vetor[1:], vetor[:3] ou vetor[:]
 */
class AcessoIntervaloVariavel {
    constructor(hashArquivo, entidadeChamada, indiceInicio, indiceFim, simboloFechamento, tipo = 'qualquer') {
        this.tipo = 'qualquer';
        this.linha = entidadeChamada.linha;
        this.hashArquivo = hashArquivo;
        this.entidadeChamada = entidadeChamada;
        this.indiceInicio = indiceInicio;
        this.indiceFim = indiceFim;
        this.simboloFechamento = simboloFechamento;
        this.tipo = tipo;
    }
    async aceitar(visitante) {
        return await visitante.visitarExpressaoAcessoIntervaloVariavel(this);
    }
    paraTexto() {
        const inicio = this.indiceInicio ? this.indiceInicio.paraTexto() : 'sem-início';
        const fim = this.indiceFim ? this.indiceFim.paraTexto() : 'sem-fim';
        return (`<acesso-índice-variável entidadeChamada=${this.entidadeChamada.paraTexto()} ` +
            `inicio=${inicio} ` +
            `fim=${fim}` +
            `/>`);
    }
    paraTextoSaida() {
        throw new Error('Método não implementado.');
    }
}
exports.AcessoIntervaloVariavel = AcessoIntervaloVariavel;
//# sourceMappingURL=acesso-intervalo-variavel.js.map