"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Bloco = void 0;
const declaracao_1 = require("./declaracao");
// TODO: `Bloco` só deveria ser declaração quando representa um escopo órfão.
// Estudar transformar em construto e suas implicações.
class Bloco extends declaracao_1.Declaracao {
    constructor(hashArquivo, linha, declaracoes) {
        super(linha, hashArquivo);
        this.declaracoes = declaracoes;
    }
    async aceitar(visitante) {
        return await visitante.visitarExpressaoBloco(this);
    }
    paraTexto() {
        let resultado = '<bloco>';
        for (const declaracao of this.declaracoes) {
            resultado += `${declaracao.paraTexto()}`;
        }
        resultado += '</bloco>';
        return resultado;
    }
}
exports.Bloco = Bloco;
//# sourceMappingURL=bloco.js.map