UNPKG

@designliquido/delegua

Version:

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

46 lines 2.13 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() { var _a; return (_a = this.superClasses[0]) !== null && _a !== void 0 ? _a : null; } constructor(simbolo, superClasses = [], metodos, propriedades = [], decoradores = [], abstrata = 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.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) => { var _a, _b; return (_b = (_a = s === null || s === void 0 ? void 0 : s.simbolo) === null || _a === void 0 ? void 0 : _a.lexema) !== null && _b !== void 0 ? _b : s; }).join(', ')} `; } if (this.mesclas.length > 0) { resultado += `mescla=${this.mesclas.map((m) => { var _a, _b; return (_b = (_a = m === null || m === void 0 ? void 0 : m.simbolo) === null || _a === void 0 ? void 0 : _a.lexema) !== null && _b !== void 0 ? _b : 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