Skip to content

Commit

Permalink
Ajustes na resolução de QualTipo
Browse files Browse the repository at this point in the history
  • Loading branch information
samuelrvg committed Oct 29, 2023
1 parent 430b663 commit d813f33
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 8 deletions.
2 changes: 1 addition & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -724,7 +724,7 @@
"runtimeArgs": [
"--inspect-brk",
"${workspaceRoot}/node_modules/jest/bin/jest.js",
"potigol/interpretador.test.ts",
"potigol/avaliador-sintatico.test.ts",
"--runInBand"
],
"skipFiles": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -413,11 +413,12 @@ export class AvaliadorSintaticoPotigol extends AvaliadorSintaticoBase {
if (this.verificarTipoSimboloAtual(tiposDeSimbolos.QUAL_TIPO)) {
const identificador = this.simbolos[this.atual - 2];
const simbolo = this.simbolos[this.atual];
const valor = expressao ? expressao : identificador.lexema;
this.avancarEDevolverAnterior();
return new QualTipo(
this.hashArquivo,
simbolo,
identificador.lexema
valor
);
} else {
const nome = this.consumir(tiposDeSimbolos.IDENTIFICADOR, "Esperado nome do método após '.'.");
Expand Down
11 changes: 8 additions & 3 deletions fontes/interpretador/dialetos/potigol/interpretador-potigol.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { InterpretadorBase } from '../../interpretador-base';

import { registrarBibliotecaGlobalPotigol } from '../../../bibliotecas/dialetos/potigol/biblioteca-global';
import { AcessoMetodo, Binario, QualTipo, Unario, Variavel } from '../../../construtos';
import { AcessoMetodo, Binario, ConstanteOuVariavel, Literal, QualTipo, Unario, Variavel } from '../../../construtos';

import * as comum from './comum';
import { ObjetoPadrao } from '../../../estruturas';
Expand Down Expand Up @@ -59,11 +59,16 @@ export class InterpretadorPotigol extends InterpretadorBase implements Interpret
}

async visitarExpressaoQualTipo(expressao: QualTipo): Promise<string> {

let qualTipo = this.pilhaEscoposExecucao.topoDaPilha().ambiente.valores[expressao.valor].valor;
let qualTipo = expressao.valor;

if (expressao?.valor instanceof ConstanteOuVariavel) {
const nome = expressao?.valor.simbolo.lexema
qualTipo = this.pilhaEscoposExecucao.topoDaPilha().ambiente.valores[nome].valor
}

if (
qualTipo instanceof Binario ||
qualTipo instanceof Literal ||
qualTipo instanceof QualTipo ||
qualTipo instanceof Unario ||
qualTipo instanceof Variavel
Expand Down
2 changes: 1 addition & 1 deletion testes/potigol/avaliador-sintatico.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ describe('Avaliador sintático', () => {
expect(retornoAvaliadorSintatico.declaracoes).toHaveLength(1);
});

it('Sucesso - Operações encadeadas', () => {
it.only('Sucesso - Operações encadeadas', () => {
const retornoLexador = lexador.mapear(['escreva (2 * 8) - (5 / 4 ^ 7)'], -1);
const retornoAvaliadorSintatico = avaliadorSintatico.analisar(retornoLexador, -1);

Expand Down
4 changes: 2 additions & 2 deletions testes/potigol/interpretador.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ describe('Interpretador', () => {
expect(retornoInterpretador.erros).toHaveLength(0);
});

it.skip('Dado um inteiro, escreva qual_tipo deve retornar Inteiro 2', async () => {
it('Dado um inteiro, escreva qual_tipo deve retornar Inteiro 2', async () => {
const retornoLexador = lexador.mapear([
'escreva(3.qual_tipo)'
], -1);
Expand Down Expand Up @@ -93,7 +93,7 @@ describe('Interpretador', () => {
expect(retornoInterpretador.erros).toHaveLength(0);
});

it.skip('Dado uma variável, escreva qual_tipo deve atribuir Inteiro', async () => {
it('Dado uma variável, escreva qual_tipo deve atribuir Inteiro', async () => {
const retornoLexador = lexador.mapear([
'a = 3.qual_tipo',
'escreva(a)'
Expand Down

0 comments on commit d813f33

Please sign in to comment.