UNPKG

@designliquido/delegua

Version:

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

45 lines 1.66 kB
"use strict"; 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