From fe9b64db4915b1369d8e636811be89180a39c512 Mon Sep 17 00:00:00 2001 From: Samuel Vaz Date: Sat, 3 Feb 2024 17:00:55 -0300 Subject: [PATCH] =?UTF-8?q?Corrige=20implementa=C3=A7=C3=A3o=20de=20primit?= =?UTF-8?q?iva=20dicion=C3=A1rio=20para=20Del=C3=A9gua?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fontes/interpretador/dialetos/potigol/comum.ts | 7 ------- fontes/interpretador/interpretador-base.ts | 8 ++++++++ fontes/tipos-de-dados/delegua.ts | 2 ++ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/fontes/interpretador/dialetos/potigol/comum.ts b/fontes/interpretador/dialetos/potigol/comum.ts index d3d1d45e..58a13e27 100644 --- a/fontes/interpretador/dialetos/potigol/comum.ts +++ b/fontes/interpretador/dialetos/potigol/comum.ts @@ -53,13 +53,6 @@ export async function visitarExpressaoAcessoMetodo( } switch (tipoObjeto) { - case 'Dicionário': - case 'dicionario': - const metodoDeDicionario: Function = primitivasVetor[expressao.simbolo.lexema]; - if (metodoDeDicionario) { - return new MetodoPrimitiva(objeto, metodoDeDicionario); - } - break; case 'numero': case 'número': const metodoDePrimitivaNumero: Function = primitivasNumero[expressao.simbolo.lexema]; diff --git a/fontes/interpretador/interpretador-base.ts b/fontes/interpretador/interpretador-base.ts index 2eb75cc2..6c0318d8 100644 --- a/fontes/interpretador/interpretador-base.ts +++ b/fontes/interpretador/interpretador-base.ts @@ -72,6 +72,7 @@ import { PilhaEscoposExecucaoInterface } from '../interfaces/pilha-escopos-execu import { inferirTipoVariavel } from './inferenciador'; import { MetodoPrimitiva } from '../estruturas/metodo-primitiva'; +import primitivasDicionario from '../bibliotecas/primitivas-dicionario'; import primitivasNumero from '../bibliotecas/primitivas-numero'; import primitivasTexto from '../bibliotecas/primitivas-texto'; import primitivasVetor from '../bibliotecas/primitivas-vetor'; @@ -1416,6 +1417,13 @@ export class InterpretadorBase implements InterpretadorInterface { } switch (tipoObjeto) { + case tipoDeDadosDelegua.OBJETO: + case tipoDeDadosDelegua.DICIONARIO: + const metodoDeDicionario: Function = primitivasDicionario[expressao.simbolo.lexema]; + if (metodoDeDicionario) { + return new MetodoPrimitiva(objeto, metodoDeDicionario); + } + break; case tipoDeDadosDelegua.INTEIRO: case tipoDeDadosDelegua.NUMERO: const metodoDePrimitivaNumero: Function = primitivasNumero[expressao.simbolo.lexema]; diff --git a/fontes/tipos-de-dados/delegua.ts b/fontes/tipos-de-dados/delegua.ts index fd7da9fa..0057f460 100644 --- a/fontes/tipos-de-dados/delegua.ts +++ b/fontes/tipos-de-dados/delegua.ts @@ -1,7 +1,9 @@ export default { + DICIONARIO: 'dicionário', INTEIRO: 'inteiro', LOGICO: 'lógico', NUMERO: 'número', NULO: 'nulo', + OBJETO: 'objeto', TEXTO: 'texto', }; \ No newline at end of file