UNPKG

@designliquido/delegua

Version:

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

49 lines 2.42 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.InterpretadorPrisma = void 0; const interpretador_1 = require("../../interpretador"); const biblioteca_global_1 = __importDefault(require("../../../bibliotecas/dialetos/prisma/biblioteca-global")); /** * Interpretador específico para o dialeto Prisma da linguagem Delégua. * Carrega as funções nativas (embutidos) do Prisma durante a construção. */ class InterpretadorPrisma extends interpretador_1.Interpretador { constructor(diretorioBase, performance = false, funcaoDeRetorno = null, funcaoDeRetornoMesmaLinha = null) { super(diretorioBase, performance, funcaoDeRetorno, funcaoDeRetornoMesmaLinha); (0, biblioteca_global_1.default)(this, this.pilhaEscoposExecucao); } async visitarExpressaoUnaria(expressao) { if (expressao.operador.tipo === 'NAO') { const operando = await this.avaliar(expressao.operando); const valor = this.resolverValor(operando); return !this.eVerdadeiro(valor); } if (expressao.operador.tipo === 'COMPRIMENTO') { const operando = await this.avaliar(expressao.operando); const valor = this.resolverValor(operando); if (typeof valor === 'string') return valor.length; if (Array.isArray(valor)) return valor.length; if (typeof valor === 'object' && valor !== null) return Object.keys(valor).length; return 0; } return super.visitarExpressaoUnaria(expressao); } async visitarExpressaoBinaria(expressao) { if (expressao.operador.tipo === 'CONCATENACAO') { const esquerda = this.resolverValor(await this.avaliar(expressao.esquerda)); const direita = this.resolverValor(await this.avaliar(expressao.direita)); const esqStr = esquerda !== null && esquerda !== undefined ? String(esquerda) : ''; const dirStr = direita !== null && direita !== undefined ? String(direita) : ''; return esqStr + dirStr; } return super.visitarExpressaoBinaria(expressao); } } exports.InterpretadorPrisma = InterpretadorPrisma; //# sourceMappingURL=interpretador-prisma.js.map