# Fortran i Maguyva: kodgrafer för vetenskapliga kodbaser

Canonical source: https://maguyva.ai/sv/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 stöder Fortran med AST, symboler och graf, så att AI-agenter kan följa subrutiner, moduler och härledda typer innan de ändrar numerisk kod.

## Stödöversikt

- Nivå: Stöd för AST och symboler
- Programmering
- Filändelser: .f, .f03, .f08, .f90, .f95, .for, +1 till
- Riktig AST-parsning för syntaxmedveten sökning och strukturell kontext.
- Namngivna symboler driver semantisk uppslagning och korsreferenser. Grafnavigering är tillgänglig när relationsextraktion är aktiverad.
- Det här språket bidrar med symboler och relationer till grafmedveten sökning; vilka kanttyper som stöds varierar med språkets inbyggda konstruktioner.
- Både AST-parsning och symbolextraktion är tillgängliga.

## Bäst lämpad för

- Forsknings-, ingenjörs- och HPC-team som underhåller lösare, simuleringar eller numeriska bibliotek i Fortran som är äldre än det nuvarande teamet.
- Repon där `.f`-filer i fast format ligger bredvid `.f90` och nyare moduler i fritt format, ofta tillsammans med wrappers i C eller Python.
- Agentstödda granskningar där första steget är att ta reda på vilka subrutiner som rör en delad modul innan numeriken ändras.

## Agentarbetsflöden

- Spåra vilka subrutiner och funktioner som anropar en lösarrutin innan dess argument eller enheter ändras.
- Lista modulerna som en programenhet hämtar in med `use` och följa dem till deras definitioner.
- Hitta var en härledd typ deklareras och vilka procedurer som arbetar med den.

## Varför Fortran behöver struktur, inte strängmatchning

Fortran-kodbaser är ofta gamla, stora och skrivna av domänexperter snarare än mjukvaruteam. Rutiner med namnen `SOLVE`, `Solve` och `solve` är samma rutin. Moduler delas av hundratals filer, och biblioteket med inbyggda procedurer är så stort att en naiv anropslista mest består av `SQRT`, `SUM` och `WRITE`.

En agent som bara greppar drunknar i det bruset. Maguyva ger den strukturen först: vilka programenheter som finns, vilka moduler de använder och vilka egna rutiner som anropar varandra.

## Vad Maguyva extraherar i Fortran

Maguyva täcker källkod i fast och fritt format (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`). Funktioner och subrutiner extraheras som anropbara symboler, och härledda typer kan väljas som typdefinitioner i strukturell sökning.

Symbolmatchningen är skiftlägesokänslig, precis som Fortran självt. Importrelationer kommer från `use` och `include`; nyckelordet tas bort så att grafen lagrar modulnamnet. Anrop, läsningar, tilldelningar, typreferenser och arv från utökade härledda typer ingår också i grafen.

Relationsfiltret tar bort omkring 165 inbyggda procedurer (I/O-satser samt rutiner för matematik, arrayer, strängar, typkonvertering och bitoperationer), så att kanterna som blir kvar pekar på din egen kod.

## Exempel på prompter för agenter

- "Vilka subrutiner anropar `compute_flux`, och vilka moduler använder de?" (`find_symbol`, sedan `dependency_search` incoming)
- "Spåra hur randvillkor tillämpas i lösarens loop." (`get_task_context`)
- "Hitta alla programenheter som använder modulen `constants`." (`text_pattern_search` efter `use constants`, sedan `find_symbol`)

## Kända begränsningar

- Fortran har varken dekoratorer eller undantagshantering, så de relationstyperna är markerade som ej tillämpliga.
- Typbundna procedurer delar samma noder som vanliga funktioner och subrutiner. Använd förinställningen `functions` i `structural_search`; förinställningen `methods` väljer inga Fortran-noder.
- Anrop till filtrerade inbyggda procedurer visas inte som kanter i grafen. Använd `text_pattern_search` när du behöver varje `WRITE` eller `OPEN`.

## Nästa steg

Anslut ett repo med [snabbstarten](/sv/docs/quickstart) och kontrollera sedan hela stödmatrisen på [kompatibilitetssidan](/sv/docs/compatibility). Om din Fortran ligger bredvid limkod i C, läs även [guiden för C](/sv/languages/c).

## Motordetaljer

- Fortran-stödet täcker källkod i fast och fritt format: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` och `.f08`.
- Funktioner och subrutiner är anropbara symboler, symbolmatchningen är skiftlägesokänslig, och `use` och `include` blir importrelationer.
- Omkring 165 inbyggda procedurer (rutiner för I/O, matematik, arrayer, strängar, typkonvertering och bitar) filtreras bort ur relationerna. Dekorator- och undantagsrelationer är markerade som ej tillämpliga.

## Användbara MCP-ingångar

- `find_symbol`: Börja med namnet på subrutinen, funktionen eller modulen; matchningen ignorerar skiftläge, precis som Fortran.
- `dependency_search`: Använd incoming-traversering på en lösar- eller delad modulrutin för att se alla anropare före en numerisk ändring.
- `get_task_context`: Använd det för prompter som "spåra hur randvillkor tillämpas i lösarens loop".
