"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Vetor = void 0;
const separador_1 = require("./separador");
class Vetor {
    constructor(hashArquivo, linha, valores, tipo) {
        this.linha = linha;
        this.hashArquivo = hashArquivo;
        this.tipo = tipo;
        this.valores = valores;
    }
    /**
     * Retorna apenas os elementos de dados do vetor, excluindo nós sintáticos
     * (Separador, comentários) que podem aparecer entre os elementos.
     */
    get elementos() {
        return this.valores.filter((v) => v.constructor !== separador_1.Separador);
    }
    get tamanho() {
        return this.elementos.length;
    }
    async aceitar(visitante) {
        return await visitante.visitarExpressaoVetor(this);
    }
    paraTexto() {
        return `<vetor tipo=${this.tipo} valores=${this.valores.reduce((anterior, atual) => (anterior += atual.paraTexto()), '')} />`;
    }
    paraTextoSaida() {
        throw new Error('Método não implementado.');
    }
}
exports.Vetor = Vetor;
//# sourceMappingURL=vetor.js.map