Pular para o conteúdo
cd /languages
  • Código de alta integridade
  • Programação
  • Suporte a AST e símbolos

Ada no Maguyva: especificações, corpos e grafos de pacotes

O Maguyva oferece suporte a Ada com AST, símbolos e grafo, para que agentes de IA sigam especificações, corpos, tasks e tipos etiquetados em sistemas Ada de longa vida.

Por que repositórios Ada precisam de um mapa de dependências

Ada separa o que um pacote promete (.ads) de como ele cumpre (.adb). É boa engenharia e também significa que uma única mudança toca vários arquivos que uma busca textual não vai conectar para você. Sistemas Ada de longa vida acrescentam outra camada: genéricos, tipos etiquetados, tasks e objetos protegidos, cujas relações importam mais do que qualquer arquivo isolado.

O Maguyva entrega esse mapa de dependências ao agente antes que ele proponha uma edição, que é exatamente a ordem esperada por uma revisão de alta integridade.

O que o Maguyva extrai em Ada

O Maguyva cobre .ads, .adb e .ada. Corpos de subprogramas e especificações de procedimentos e funções são extraídos como símbolos chamáveis, então tanto a especificação quanto o corpo de uma rotina podem ser buscados. A correspondência de símbolos não diferencia maiúsculas de minúsculas, assim como o próprio Ada.

As importações vêm das cláusulas with e use, e a palavra-chave é removida para que o grafo guarde o nome do pacote. O grafo também registra chamadas, herança e sobrescritas em tipos etiquetados, instanciação, referências de tipo, leituras e escritas, e arestas de lançamento e tratamento de exceções.

Na busca estrutural, tipos task, tipos protegidos, tipos registro e tipos interface podem ser selecionados como definições de tipo, e corpos de entrada como métodos.

Exemplos de prompts para agentes

  • “Quais unidades dependem de Flight_Control.Sensors e quais dos seus subprogramas elas chamam?” (dependency_search incoming)
  • “Mostre a especificação e o corpo de Compute_Trajectory e todos os chamadores.” (find_symbol)
  • “Explique como a task de telemetria entrega dados ao objeto protegido de log.” (get_task_context)

Limitações conhecidas

  • Ada usa a mesma sintaxe para algumas chamadas, acesso a campos de registros e indexação. O Maguyva filtra tipos predefinidos, pacotes da biblioteca padrão, funções de atributo e operadores (cerca de 113 padrões) para manter o grafo de chamadas limpo, então chamadas à biblioteca padrão não são arestas do grafo. O acesso a campos de registros e a indexação são diferenciados das chamadas pela posição na gramática, não por uma lista de nomes de campo. Chamadas comuns de E/S de texto como Put_Line, Put e Get são mantidas de propósito.
  • Cláusulas use mudam a visibilidade, mas não são selecionadas como importações na busca estrutural; cláusulas with são.
  • Nós de tipos registro e interface podem ser fragmentos anônimos, então consultas estruturais por nome podem deixá-los passar. Use find_symbol para tipos nomeados.

Próximos passos

Conecte um repositório pelo início rápido e depois confira a matriz de suporte na página de compatibilidade. Se o seu código Ada se liga a C, leia também o guia de C.

Uso ideal

  • > Equipes que mantêm Ada de longa data em aeroespacial, defesa, ferrovias ou outros domínios de alta integridade em que toda mudança é revisada.
  • > Bases de código divididas entre especificações `.ads` e corpos `.adb`, com interface e implementação em arquivos diferentes.
  • > Engenheiros que usam agentes de IA para análise de impacto e preparação de revisões, não para gerar código sem revisão.

Fluxos de trabalho de agente

  • > Encontrar todas as unidades que fazem `with` de um pacote antes de mudar sua especificação.
  • > Rastrear quais subprogramas chamam uma rotina através das fronteiras de pacotes.
  • > Mapear tipos task, tipos protegidos e hierarquias de tipos etiquetados antes de uma mudança de concorrência ou de design.

Detalhes do motor

  • > O suporte a Ada cobre especificações `.ads`, corpos `.adb` e `.ada`. Corpos e especificações de subprogramas são ambos símbolos chamáveis.
  • > A correspondência de símbolos não diferencia maiúsculas de minúsculas, e as cláusulas `with` e `use` viram relações de importação depois que a palavra-chave é removida.
  • > Cerca de 113 tipos predefinidos, pacotes da biblioteca padrão, funções de atributo e operadores são filtrados das chamadas; o acesso a campos de registros e a indexação são diferenciados das chamadas pela posição na gramática, e `Put_Line`, `Put` e `Get` são mantidos de propósito.

Pontos de entrada MCP úteis

  • find_symbol

    Use para encontrar juntos a especificação e o corpo de um subprograma, com as referências.

  • dependency_search

    Use a travessia incoming em um pacote antes de mudar sua especificação para ver todas as unidades que dependem dele.

  • get_task_context

    Use para prompts como "explique como a task de telemetria entrega dados ao objeto protegido de log".