# Ada en Maguyva: especificaciones, cuerpos y grafos de paquetes

Canonical source: https://maguyva.ai/es/languages/ada

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva admite Ada con AST, símbolos y grafo, para que los agentes de IA sigan especificaciones, cuerpos, tareas y tipos etiquetados en sistemas Ada de larga vida.

## Resumen de soporte

- Nivel: Soporte de AST y símbolos
- Programación
- Extensiones: .ada, .adb, .ads
- Análisis AST real para búsqueda con reconocimiento de sintaxis y contexto estructural.
- Los símbolos con nombre alimentan la búsqueda semántica y las referencias cruzadas. La navegación por grafo está disponible cuando la extracción de relaciones está habilitada.
- Este lenguaje aporta símbolos y relaciones a la búsqueda basada en grafos; los tipos de arista disponibles varían según sus construcciones nativas.
- Están disponibles tanto el análisis AST como la extracción de símbolos.

## Mejor uso

- Equipos que mantienen Ada de larga trayectoria en aeroespacial, defensa, ferrocarriles u otros dominios de alta integridad donde cada cambio se revisa.
- Bases de código divididas entre especificaciones `.ads` y cuerpos `.adb`, donde la interfaz y la implementación viven en archivos distintos.
- Ingenieros que usan agentes de IA para análisis de impacto y preparación de revisiones, no para generar código sin revisión.

## Flujos de trabajo del agente

- Encontrar todas las unidades que hacen `with` de un paquete antes de cambiar su especificación.
- Rastrear qué subprogramas llaman a una rutina a través de los límites de los paquetes.
- Mapear tipos tarea, tipos protegidos y jerarquías de tipos etiquetados antes de un cambio de concurrencia o de diseño.

## Por qué los repositorios Ada necesitan un mapa de dependencias

Ada separa lo que promete un paquete (`.ads`) de cómo lo cumple (`.adb`). Es buena ingeniería, y también significa que un solo cambio toca varios archivos que una búsqueda de texto no conectará por ti. Los sistemas Ada de larga vida añaden otra capa: genéricos, tipos etiquetados, tareas y objetos protegidos cuyas relaciones importan más que cualquier archivo aislado.

Maguyva entrega al agente ese mapa de dependencias antes de que proponga una edición, que es justo el orden que espera una revisión de alta integridad.

## Qué extrae Maguyva en Ada

Maguyva cubre `.ads`, `.adb` y `.ada`. Los cuerpos de subprogramas y las especificaciones de procedimientos y funciones se extraen como símbolos invocables, de modo que tanto la especificación como el cuerpo de una rutina se pueden buscar. La coincidencia de símbolos no distingue mayúsculas de minúsculas, igual que Ada.

Las importaciones provienen de las cláusulas `with` y `use`, y se elimina la palabra clave para que el grafo guarde el nombre del paquete. El grafo también registra llamadas, herencia y sobrescrituras en tipos etiquetados, instanciación, referencias de tipo, lecturas y escrituras, y aristas de lanzamiento y manejo de excepciones.

En la búsqueda estructural, los tipos tarea, tipos protegidos, tipos registro y tipos interfaz se pueden seleccionar como definiciones de tipo, y los cuerpos de entrada como métodos.

## Ejemplos de prompts para agentes

- "¿Qué unidades dependen de `Flight_Control.Sensors` y cuáles de sus subprogramas llaman?" (`dependency_search` incoming)
- "Muestra la especificación y el cuerpo de `Compute_Trajectory` y todos sus llamadores." (`find_symbol`)
- "Explica cómo la tarea de telemetría entrega datos al objeto protegido de registro." (`get_task_context`)

## Limitaciones conocidas

- Ada usa la misma sintaxis para algunas llamadas, el acceso a campos de registros y la indexación. Maguyva filtra tipos predefinidos, paquetes de la biblioteca estándar, funciones de atributo y operadores (unos 113 patrones) para mantener limpio el grafo de llamadas, así que las llamadas a la biblioteca estándar no son aristas del grafo. El acceso a campos de registros y la indexación se distinguen de las llamadas por su posición en la gramática, no por una lista de nombres de campo. Las llamadas habituales de E/S de texto como `Put_Line`, `Put` y `Get` se conservan a propósito.
- Las cláusulas `use` cambian la visibilidad, pero no se seleccionan como importaciones en la búsqueda estructural; las cláusulas `with`, sí.
- Los nodos de tipos registro e interfaz pueden ser fragmentos anónimos, por lo que las consultas estructurales por nombre pueden pasarlos por alto. Usa `find_symbol` para los tipos con nombre.

## Próximos pasos

Conecta un repositorio con el [inicio rápido](/es/docs/quickstart) y luego revisa la matriz de compatibilidad en la [página de compatibilidad](/es/docs/compatibility). Si tu código Ada se enlaza con C, lee también la [guía de C](/es/languages/c).

## Detalles del motor

- La compatibilidad con Ada cubre especificaciones `.ads`, cuerpos `.adb` y `.ada`. Tanto los cuerpos como las especificaciones de subprogramas son símbolos invocables.
- La coincidencia de símbolos no distingue mayúsculas de minúsculas, y las cláusulas `with` y `use` se convierten en relaciones de importación tras quitar la palabra clave.
- Unos 113 tipos predefinidos, paquetes de la biblioteca estándar, funciones de atributo y operadores se filtran de las llamadas; el acceso a campos de registros y la indexación se distinguen de las llamadas por su posición en la gramática, y `Put_Line`, `Put` y `Get` se conservan a propósito.

## Puntos de entrada MCP útiles

- `find_symbol`: Úsalo para encontrar juntas la especificación y el cuerpo de un subprograma, con sus referencias.
- `dependency_search`: Usa el recorrido incoming sobre un paquete antes de cambiar su especificación para ver todas las unidades que dependen de él.
- `get_task_context`: Úsalo para prompts como "explica cómo la tarea de telemetría entrega datos al objeto protegido de registro".
