# Fortran in Maguyva: grafi del codice per basi di codice scientifiche

Canonical source: https://maguyva.ai/it/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 supporta Fortran con AST, simboli e grafo, così gli agenti IA seguono subroutine, moduli e tipi derivati prima di modificare codice numerico.

## Istantanea del supporto

- Livello: Supporto AST e simboli
- Programmazione
- Estensioni: .f, .f03, .f08, .f90, .f95, .for, +1 altre
- Analisi AST reale per ricerca sintattica e contesto strutturale.
- I simboli nominati alimentano la ricerca semantica e i riferimenti incrociati. La navigazione del grafo è disponibile quando è abilitata l’estrazione delle relazioni.
- Questo linguaggio contribuisce con simboli e relazioni alla ricerca basata sul grafo; i tipi di arco supportati variano in base ai suoi costrutti nativi.
- Sono disponibili sia l’analisi AST sia l’estrazione dei simboli.

## Il più adatto per

- Team di ricerca, ingegneria e HPC che mantengono solver, simulazioni o librerie numeriche Fortran più vecchi del team attuale.
- Repository che mescolano file `.f` in formato fisso con moduli `.f90` e successivi in formato libero, spesso accanto a wrapper C o Python.
- Revisioni assistite da agenti in cui il primo passo è capire quali subroutine toccano un modulo condiviso prima di una modifica numerica.

## Workflow degli agenti

- Tracciare quali subroutine e funzioni chiamano una routine del solver prima di cambiarne argomenti o unità.
- Elencare i moduli che un'unità di programma importa con `use` e risalire alle loro definizioni.
- Trovare dove è dichiarato un tipo derivato e quali procedure lo usano.

## Perché Fortran ha bisogno di struttura, non di confronto tra stringhe

Le basi di codice Fortran tendono a essere vecchie, grandi e scritte da esperti di dominio più che da team software. Le routine chiamate `SOLVE`, `Solve` e `solve` sono la stessa routine. I moduli sono condivisi da centinaia di file, e la libreria delle procedure intrinseche è così ampia che un elenco ingenuo di chiamate contiene soprattutto `SQRT`, `SUM` e `WRITE`.

Un agente che usa solo grep affoga in questo rumore. Maguyva gli fornisce prima la struttura: quali unità di programma esistono, quali moduli usano e quali routine del codice si chiamano a vicenda.

## Cosa estrae Maguyva in Fortran

Maguyva copre sorgenti in formato fisso e libero (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`). Funzioni e subroutine vengono estratte come simboli invocabili, e i tipi derivati si possono selezionare come definizioni di tipo nella ricerca strutturale.

Il confronto dei simboli non distingue maiuscole e minuscole, come Fortran stesso. Le relazioni di import derivano da `use` e `include`, con la parola chiave rimossa così che il grafo memorizzi il nome del modulo. Chiamate, letture, assegnazioni, riferimenti di tipo ed ereditarietà dai tipi derivati estesi fanno anch'essi parte del grafo.

Il filtro delle relazioni scarta circa 165 procedure intrinseche (istruzioni di I/O e routine matematiche, di array, di stringhe, di conversione di tipo e di manipolazione dei bit), così gli archi rimasti puntano al tuo codice.

## Esempi di prompt per agenti

- "Quali subroutine chiamano `compute_flux` e quali moduli usano?" (`find_symbol`, poi `dependency_search` incoming)
- "Traccia come vengono applicate le condizioni al contorno nel ciclo del solver." (`get_task_context`)
- "Trova tutte le unità di programma che usano il modulo `constants`." (`text_pattern_search` su `use constants`, poi `find_symbol`)

## Limiti noti

- Fortran non ha decoratori né gestione delle eccezioni, quindi questi tipi di relazione sono contrassegnati come non applicabili.
- Le procedure legate ai tipi condividono gli stessi nodi di funzioni e subroutine ordinarie. Usa il preset `functions` in `structural_search`; il preset `methods` non seleziona nodi Fortran.
- Le chiamate alle procedure intrinseche filtrate non compaiono come archi del grafo. Usa `text_pattern_search` quando ti serve ogni `WRITE` o `OPEN`.

## Prossimi passi

Collega un repository con la [guida rapida](/it/docs/quickstart), poi consulta la matrice di supporto completa nella [pagina di compatibilità](/it/docs/compatibility). Se il tuo Fortran convive con codice di collegamento in C, leggi anche la [guida a C](/it/languages/c).

## Dettagli del motore

- Il supporto a Fortran copre sorgenti in formato fisso e libero: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` e `.f08`.
- Funzioni e subroutine sono simboli invocabili, il confronto dei simboli non distingue maiuscole e minuscole, e `use` e `include` diventano relazioni di import.
- Circa 165 procedure intrinseche (routine di I/O, matematiche, di array, di stringhe, di conversione di tipo e sui bit) vengono filtrate dalle relazioni. Le relazioni di decoratore e di eccezione sono contrassegnate come non applicabili.

## Punti di ingresso MCP utili

- `find_symbol`: Parti dal nome della subroutine, della funzione o del modulo; il confronto ignora maiuscole e minuscole, come Fortran.
- `dependency_search`: Usa la navigazione incoming su una routine del solver o di un modulo condiviso per vedere ogni chiamante prima di una modifica numerica.
- `get_task_context`: Usalo per prompt come "traccia come vengono applicate le condizioni al contorno nel ciclo del solver".
