@designliquido/delegua
Version:
Linguagem de programação simples e moderna usando português estruturado.
45 lines • 1.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.InterfaceDeclaracao = exports.AssinaturaMetodo = void 0;
const declaracao_1 = require("./declaracao");
/**
* Assinatura de um método em uma declaração de interface.
* Contém apenas nome e parâmetros — sem corpo.
*/
class AssinaturaMetodo {
constructor(nome, parametros = [], tipoRetorno) {
this.nome = nome;
this.parametros = parametros;
this.tipoRetorno = tipoRetorno;
}
}
exports.AssinaturaMetodo = AssinaturaMetodo;
/**
* Declaração de uma interface.
* Define um contrato de métodos e propriedades que as classes implementadoras devem respeitar.
* A verificação é feita em tempo de análise sintática (parse-time), não em tempo de execução.
*/
class InterfaceDeclaracao extends declaracao_1.Declaracao {
constructor(simbolo, metodos = [], propriedades = []) {
super(Number(simbolo.linha), simbolo.hashArquivo);
this.simbolo = simbolo;
this.metodos = metodos;
this.propriedades = propriedades;
}
async aceitar(visitante) {
return await visitante.visitarDeclaracaoInterface(this);
}
paraTexto() {
let resultado = `<interface nome=${this.simbolo.lexema}>`;
for (const prop of this.propriedades) {
resultado += prop.paraTexto();
}
for (const metodo of this.metodos) {
resultado += `<assinatura-metodo nome=${metodo.nome.lexema} />`;
}
resultado += `</interface>`;
return resultado;
}
}
exports.InterfaceDeclaracao = InterfaceDeclaracao;
//# sourceMappingURL=interface.js.map