Skip to content

Conversation

RafaelLopes23
Copy link
Collaborator

  • O PR adiciona o parser de if-elif-else e corrige a função keyword. Mantive a implementação proposta e integrei na branch dedicada de resolução.

Resolução de conflitos

  • Arquivo: parser_stmt.rs

    • Mantida a nova função parse_if_chain_statement e, no parse_statement, ela é chamada antes de parse_if_else_statement para reconhecer corretamente cadeias com elif.
    • Preservada a função antiga parse_if_else_statement para compatibilidade com if/else simples.
    • Conflitos no bloco de testes resolvidos removendo os marcadores de merge, ajustando chaves e mantendo:
      • O teste novo test_parse_if_chain_statement (if, if-else, if-elif, if-elif-else) no módulo de testes de statements.
      • O módulo testdef_tests apenas para funções de teste (test functions).
      • O módulo assert_tests para asserts.
    • Observação: Não movi o teste de if-elif-else para dentro de testdef_tests pois ele não é sobre “test functions”; faz sentido permanecer junto aos demais testes de statements.
  • Arquivo: parser_common.rs

    • Mantida a correção na keyword: uso de terminated(tag(kw), peek(not(alphanumeric1))) com multispace0, impedindo que “ifx” seja lido como “if”.

Observações sobre o PR (Observação feita com auxilio do Copilot, usando GPT-5, achei interessante colocar aqui.)

  • O AST ganhou Statement::IfChain. O interpretador e o type checker ainda não tratam IfChain diretamente; hoje não impacta porque os testes adicionados exercitam o parser. Próximos passos possíveis:
    • Implementar suporte a IfChain no interpretador e no verificador de tipos; ou
    • Traduzir IfChain para IfThenElse aninhado no próprio parser para manter compatibilidade com o runtime atual.
  • Sugestão: atualizar a documentação da gramática para incluir elif.

@RafaelLopes23 RafaelLopes23 changed the base branch from main to develop-Rafael September 3, 2025 18:09
@RafaelLopes23 RafaelLopes23 merged commit e33f604 into UnBCIC-TP2:develop-Rafael Sep 3, 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.

3 participants