"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Literal = void 0;
class Literal {
    constructor(hashArquivo, linha, valor, tipo = 'qualquer') {
        this.linha = linha;
        this.hashArquivo = hashArquivo;
        this.valor = valor;
        this.tipo = tipo;
    }
    async aceitar(visitante) {
        return await visitante.visitarExpressaoLiteral(this);
    }
    paraTexto() {
        let valor = this.valor;
        if (this.valor.hasOwnProperty('paraTextoSaida')) {
            valor = this.valor.paraTextoSaida();
        }
        return `<literal valor=${this.valor} tipo=${this.tipo} />`;
    }
    paraTextoSaida() {
        if (this.tipo === 'texto') {
            return `"${this.valor}"`;
        }
        return `${this.valor}`;
    }
}
exports.Literal = Literal;
//# sourceMappingURL=literal.js.map