# Fortran en Maguyva: grafos de código para bases de código científicas

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

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 Fortran con AST, símbolos y grafo, para que los agentes de IA sigan subrutinas, módulos y tipos derivados antes de cambiar código numérico.

## Resumen de soporte

- Nivel: Soporte de AST y símbolos
- Programación
- Extensiones: .f, .f03, .f08, .f90, .f95, .for, +1 más
- 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 de investigación, ingeniería y HPC que mantienen solvers, simulaciones o bibliotecas numéricas en Fortran más antiguos que el equipo actual.
- Repositorios que mezclan archivos `.f` de formato fijo con módulos `.f90` y posteriores de formato libre, a menudo junto a wrappers de C o Python.
- Revisiones asistidas por agentes en las que lo primero es saber qué subrutinas tocan un módulo compartido antes de un cambio numérico.

## Flujos de trabajo del agente

- Rastrear qué subrutinas y funciones llaman a una rutina del solver antes de cambiar sus argumentos o unidades.
- Listar los módulos que una unidad de programa importa con `use` y seguirlos hasta sus definiciones.
- Encontrar dónde se declara un tipo derivado y qué procedimientos trabajan con él.

## Por qué Fortran necesita estructura, no coincidencia de cadenas

Las bases de código en Fortran suelen ser antiguas, grandes y escritas por especialistas del dominio más que por equipos de software. Las rutinas llamadas `SOLVE`, `Solve` y `solve` son la misma rutina. Los módulos se comparten entre cientos de archivos, y la biblioteca de procedimientos intrínsecos es tan grande que una lista ingenua de llamadas se llena sobre todo de `SQRT`, `SUM` y `WRITE`.

Un agente que solo usa grep se ahoga en ese ruido. Maguyva le entrega primero la estructura: qué unidades de programa existen, qué módulos usan y qué rutinas propias se llaman entre sí.

## Qué extrae Maguyva en Fortran

Maguyva cubre código fuente de formato fijo y libre (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`). Las funciones y subrutinas se extraen como símbolos invocables, y los tipos derivados se pueden seleccionar como definiciones de tipo en la búsqueda estructural.

La coincidencia de símbolos no distingue mayúsculas de minúsculas, igual que Fortran. Las relaciones de importación provienen de `use` e `include`, y se elimina la palabra clave para que el grafo guarde el nombre del módulo. Las llamadas, lecturas, asignaciones, referencias de tipo y la herencia de tipos derivados extendidos también forman parte del grafo.

El filtro de relaciones descarta unos 165 procedimientos intrínsecos (sentencias de E/S y rutinas matemáticas, de arreglos, de cadenas, de conversión de tipos y de manipulación de bits), así que las aristas restantes apuntan a tu propio código.

## Ejemplos de prompts para agentes

- "¿Qué subrutinas llaman a `compute_flux` y qué módulos usan?" (`find_symbol` y luego `dependency_search` incoming)
- "Rastrea cómo se aplican las condiciones de contorno en el bucle del solver." (`get_task_context`)
- "Encuentra todas las unidades de programa que usan el módulo `constants`." (`text_pattern_search` para `use constants` y luego `find_symbol`)

## Limitaciones conocidas

- Fortran no tiene decoradores ni manejo de excepciones, por lo que esos tipos de relación están marcados como no aplicables.
- Los procedimientos ligados a tipos comparten los mismos nodos que las funciones y subrutinas comunes. Usa el preset `functions` en `structural_search`; el preset `methods` no selecciona ningún nodo de Fortran.
- Las llamadas a procedimientos intrínsecos filtrados no aparecen como aristas del grafo. Usa `text_pattern_search` cuando necesites cada `WRITE` u `OPEN`.

## Próximos pasos

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

## Detalles del motor

- La compatibilidad con Fortran cubre código fuente de formato fijo y libre: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` y `.f08`.
- Las funciones y subrutinas son símbolos invocables, la coincidencia de símbolos no distingue mayúsculas de minúsculas, y `use` e `include` se convierten en relaciones de importación.
- Unos 165 procedimientos intrínsecos (rutinas de E/S, matemáticas, arreglos, cadenas, conversión de tipos y bits) se filtran de las relaciones. Las relaciones de decorador y de excepción están marcadas como no aplicables.

## Puntos de entrada MCP útiles

- `find_symbol`: Empieza por el nombre de la subrutina, función o módulo; la coincidencia no distingue mayúsculas, como Fortran.
- `dependency_search`: Usa el recorrido incoming sobre una rutina del solver o de un módulo compartido para ver cada llamador antes de un cambio numérico.
- `get_task_context`: Úsalo para prompts como "rastrea cómo se aplican las condiciones de contorno en el bucle del solver".
