From d14d328437fc22e5193e6070e72237b6e387c387 Mon Sep 17 00:00:00 2001 From: Aristidescosta Date: Sun, 18 Feb 2024 15:59:40 +0100 Subject: [PATCH 1/3] fix: resolvendo erro ao chamar lista --- fontes/interpretador/interpretador-base.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fontes/interpretador/interpretador-base.ts b/fontes/interpretador/interpretador-base.ts index 94248aa1..b7043b06 100644 --- a/fontes/interpretador/interpretador-base.ts +++ b/fontes/interpretador/interpretador-base.ts @@ -126,9 +126,9 @@ export class InterpretadorBase implements InterpretadorInterface { regexInterpolacao = /\${(.*?)}/g; private tiposNumericos = [ - tipoDeDadosDelegua.INTEIRO, - tipoDeDadosDelegua.NUMERO, - tipoDeDadosDelegua.NÚMERO, + tipoDeDadosDelegua.INTEIRO, + tipoDeDadosDelegua.NUMERO, + tipoDeDadosDelegua.NÚMERO, tipoDeDadosDelegua.REAL ]; @@ -1630,7 +1630,7 @@ export class InterpretadorBase implements InterpretadorInterface { case 'dicionário': return JSON.stringify(objeto.valor); default: - return objeto.valor.paraTexto(); + return objeto.valor; } } } From a1e8eb91894162225b3e2427825e238313c97504 Mon Sep 17 00:00:00 2001 From: Aristidescosta Date: Wed, 21 Feb 2024 20:30:14 +0100 Subject: [PATCH 2/3] =?UTF-8?q?modifica=C3=A7oes=20necess=C3=A1rias=20para?= =?UTF-8?q?=20o=20paraTexto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fontes/interpretador/interpretador-base.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/fontes/interpretador/interpretador-base.ts b/fontes/interpretador/interpretador-base.ts index 2be69a49..af4c4a08 100644 --- a/fontes/interpretador/interpretador-base.ts +++ b/fontes/interpretador/interpretador-base.ts @@ -1090,6 +1090,8 @@ export class InterpretadorBase implements InterpretadorInterface { const resultadoAvaliacao = await this.avaliar(argumento); let valor = resultadoAvaliacao?.hasOwnProperty('valor') ? resultadoAvaliacao.valor : resultadoAvaliacao; formatoTexto += `${this.paraTexto(valor)} `; + console.log(formatoTexto); + } return formatoTexto.trimEnd(); @@ -1616,8 +1618,11 @@ export class InterpretadorBase implements InterpretadorInterface { retornoVetor += `${this.paraTexto(elemento)},`; } - retornoVetor = retornoVetor.slice(0, -1); + if(retornoVetor.length > 1){ + retornoVetor = retornoVetor.slice(0, -1); + } retornoVetor += ']'; + return retornoVetor; } From 41766d245a01a5cfce3bc31fdbd9bd8b16617ae3 Mon Sep 17 00:00:00 2001 From: Aristidescosta Date: Thu, 22 Feb 2024 18:41:29 +0100 Subject: [PATCH 3/3] refactor: teste do paraTexto em array --- fontes/interpretador/interpretador-base.ts | 2 -- testes/interpretador/interpretador.test.ts | 26 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/fontes/interpretador/interpretador-base.ts b/fontes/interpretador/interpretador-base.ts index af4c4a08..4d8fa307 100644 --- a/fontes/interpretador/interpretador-base.ts +++ b/fontes/interpretador/interpretador-base.ts @@ -1090,8 +1090,6 @@ export class InterpretadorBase implements InterpretadorInterface { const resultadoAvaliacao = await this.avaliar(argumento); let valor = resultadoAvaliacao?.hasOwnProperty('valor') ? resultadoAvaliacao.valor : resultadoAvaliacao; formatoTexto += `${this.paraTexto(valor)} `; - console.log(formatoTexto); - } return formatoTexto.trimEnd(); diff --git a/testes/interpretador/interpretador.test.ts b/testes/interpretador/interpretador.test.ts index 3f4f5455..ccc61d8d 100644 --- a/testes/interpretador/interpretador.test.ts +++ b/testes/interpretador/interpretador.test.ts @@ -1410,6 +1410,32 @@ describe('Interpretador', () => { expect(retornoInterpretador.erros).toHaveLength(0); }); + + it('função que retorna lista', async () => { + const retornoLexador = lexador.mapear( + [ + "funcao retorneLista() {", + "var lista = []", + + "retorna lista", + "}", + + "escreva(retorneLista())" + ], + -1 + ); + const retornoAvaliadorSintatico = avaliadorSintatico.analisar(retornoLexador, -1); + + interpretador.funcaoDeRetorno = (saida: string) => { + expect(saida).toEqual('[]'); + }; + + const retornoInterpretador = await interpretador.interpretar( + retornoAvaliadorSintatico.declaracoes + ); + + expect(retornoInterpretador.erros).toHaveLength(0); + }); }); });