@designliquido/delegua
Version:
Linguagem de programação simples e moderna usando português estruturado.
31 lines • 1.69 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.InterpretadorTenda = void 0;
const interpretador_base_1 = require("../../interpretador-base");
const biblioteca_global_1 = __importDefault(require("../../../bibliotecas/dialetos/tenda/biblioteca-global"));
const NAMESPACES_TENDA = new Set(['Lista', 'Matemática', 'Saída', 'Texto', 'Data']);
class InterpretadorTenda extends interpretador_base_1.InterpretadorBase {
constructor(diretorioBase, performance = false, funcaoDeRetorno = null, funcaoDeRetornoMesmaLinha = null) {
super(diretorioBase, performance, funcaoDeRetorno, funcaoDeRetornoMesmaLinha);
(0, biblioteca_global_1.default)(this, this.pilhaEscoposExecucao);
}
/**
* Sobrescrita para que os namespaces do Tenda (Lista, Matemática, etc.) não sejam
* confundidos com dicionários de Delégua. Assim, métodos como `contém` não são
* interceptados pelas primitivas de dicionário.
*/
async visitarExpressaoAcessoMetodoOuPropriedade(expressao) {
const nomeObjeto = this.resolverNomeObjectoAcessado(expressao.objeto);
if (NAMESPACES_TENDA.has(nomeObjeto)) {
const variavelObjeto = await this.avaliar(expressao.objeto);
const objeto = this.resolverValor(variavelObjeto);
return objeto[expressao.simbolo.lexema];
}
return super.visitarExpressaoAcessoMetodoOuPropriedade(expressao);
}
}
exports.InterpretadorTenda = InterpretadorTenda;
//# sourceMappingURL=interpretador-tenda.js.map