@designliquido/delegua
Version:
Linguagem de programação simples e moderna usando português estruturado.
46 lines • 1.85 kB
JavaScript
;
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