UNPKG

@designliquido/delegua

Version:

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

31 lines 1.69 kB
"use strict"; 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