UNPKG

@designliquido/delegua

Version:

Linguagem de programação simples e moderna usando português estruturado.

46 lines 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Classe = void 0; const declaracao_1 = require("./declaracao"); class Classe extends declaracao_1.Declaracao { /** Compat com tradutores e analisador semântico que ainda usam .superClasse */ get superClasse() { return this.superClasses[0] ?? null; } constructor(simbolo, superClasses = [], metodos, propriedades = [], decoradores = [], abstrata = false, estrangeira = false, classeEstatica = false, implementa = [], mesclas = []) { super(Number(simbolo.linha), simbolo.hashArquivo); this.simbolo = simbolo; this.superClasses = superClasses; this.mesclas = mesclas; this.metodos = metodos; this.propriedades = propriedades; this.decoradores = decoradores; this.abstrata = abstrata; this.estrangeira = estrangeira; this.classeEstatica = classeEstatica; this.implementa = implementa; } async aceitar(visitante) { return await visitante.visitarDeclaracaoClasse(this); } paraTexto() { let resultado = `<classe nome=${this.simbolo.lexema} `; if (this.superClasses.length > 0) { resultado += `herda=${this.superClasses.map((s) => s?.simbolo?.lexema ?? s).join(', ')} `; } if (this.mesclas.length > 0) { resultado += `mescla=${this.mesclas.map((m) => m?.simbolo?.lexema ?? m).join(', ')} `; } resultado += '>'; for (const propriedade of this.propriedades) { resultado += `${propriedade.paraTexto()}`; } for (const metodo of this.metodos) { resultado += `${metodo.paraTexto()}`; } resultado += `</classe>`; return resultado; } } exports.Classe = Classe; //# sourceMappingURL=classe.js.map