Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refatoração e Expansão de Validações no Analisador Semântico #39

Conversation

Aristidescosta200
Copy link
Contributor

@Aristidescosta200 Aristidescosta200 commented Jan 11, 2025

PR: Refatoração e Expansão de Validações no Analisador Semântico

Descrição

Este pull request implementa melhorias significativas no Analisador Semântico, abordando a resolução da issue #37 - Avaliador Sintático: Numa atribuição cujo valor é outra variável, verificar o tipo de valor . As alterações incluem ajustes no código principal, organização dos testes existentes e adição de novos casos para garantir maior robustez e cobertura.


Mudanças Realizadas

1. Melhorias no Código Principal

  • Adicionada verificação de variáveis não declaradas em declarações e atribuições:

    • Alteração no método visitarDeclaracaoVar para verificar se uma variável usada como inicializador já foi declarada no escopo atual ou superior.
    • Inclusão de diagnóstico apropriado para casos de uso de variáveis não declaradas.
  • Validação de tipos em atribuições:

    • Verificação de compatibilidade de tipos em inicializadores de variáveis, com mensagens detalhadas para tipos incompatíveis.
    • Alteração no método visitarExpressaoDeAtribuicao para lidar com validações mais precisas de variáveis referenciadas.
  • Reestruturação da lógica de validação de tipos:

    • Criação do método auxiliar validarCompatibilidadeTipos, centralizando a lógica de validação de compatibilidade entre tipos.

2. Organização e Expansão dos Testes

  • Casos de Sucesso:

    • Testes para verificar atribuições válidas entre tipos compatíveis.
    • Teste para atribuição válida por índice em arrays.
  • Casos de Falha:

    • Verificações para os seguintes cenários:
      • Uso de variáveis não declaradas em atribuições ou chamadas de funções.
      • Atribuições de valores com tipos incompatíveis.
      • Reatribuição de valores a constantes.
      • Chamada de funções inexistentes.
      • Argumentos com tipos incompatíveis em chamadas de funções.

Copy link
Contributor

@leonelsanchesdasilva leonelsanchesdasilva left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excelente trabalho! Obrigado!

@leonelsanchesdasilva leonelsanchesdasilva merged commit 5616d0e into DesignLiquido:principal Jan 11, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants