Skip to content

Commit

Permalink
[delegua] avaliador sintático atribuição de variável
Browse files Browse the repository at this point in the history
  • Loading branch information
pablotdv committed Oct 29, 2023
1 parent 625cf2b commit eba0021
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
2 changes: 1 addition & 1 deletion fontes/analisador-semantico/analisador-semantico.ts
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ export class AnalisadorSemantico implements AnalisadorSemanticoInterface {
this.variaveis[declaracao.simbolo.lexema] = {
imutavel: false,
tipo: declaracao.tipo,
valor: declaracao.inicializador.valor || declaracao.inicializador
valor: declaracao.inicializador?.valor || declaracao.inicializador
};

return Promise.resolve();
Expand Down
12 changes: 12 additions & 0 deletions testes/analisador-semantico.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,18 @@ describe('Analisador semântico', () => {
expect(retornoAnalisadorSemantico.erros).toHaveLength(0);
});

it('Atribuindo variável após declaração', () => {
const retornoLexador = lexador.mapear([
"var variavel1: texto",
"variavel1 = 'teste'",
], -1);
const retornoAvaliadorSintatico = avaliadorSintatico.analisar(retornoLexador, -1);
const retornoAnalisadorSemantico = analisadorSemantico.analisar(retornoAvaliadorSintatico.declaracoes);

expect(retornoAnalisadorSemantico).toBeTruthy();
expect(retornoAnalisadorSemantico.erros).toHaveLength(0);
});

it('Sucesso - Função com definição de tipos', () => {
const retornoLexador = lexador.mapear([
// "var a = funcao (valor1: inteiro, valor2: qualquer, valor3: texto): texto {",
Expand Down

0 comments on commit eba0021

Please sign in to comment.