# Fortran in Maguyva: codegrafen voor wetenschappelijke codebases

Canonical source: https://maguyva.ai/nl/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 ondersteunt Fortran met AST, symbolen en graaf, zodat AI-agents subroutines, modules en afgeleide types volgen voordat ze numerieke code wijzigen.

## Ondersteuningsoverzicht

- Tier: AST- en symboolondersteuning
- Programmeren
- Extensies: .f, .f03, .f08, .f90, .f95, .for, +1 meer
- Echte AST-parsing voor syntaxbewust zoeken en structurele context.
- Benoemde symbolen voeden semantische lookup en kruisverwijzingen. Graafnavigatie is beschikbaar wanneer relatie-extractie is ingeschakeld.
- Deze taal draagt symbolen en relaties bij aan graafbewust zoeken; ondersteunde kanttypen variëren met de eigen constructies van de taal.
- Zowel AST-parsing als symboolextractie zijn beschikbaar.

## Beste toepassing

- Onderzoeks-, engineering- en HPC-teams die Fortran-solvers, simulaties of numerieke bibliotheken onderhouden die ouder zijn dan het huidige team.
- Repositories waarin `.f`-bestanden in vaste vorm naast `.f90`- en nieuwere modules in vrije vorm staan, vaak met C- of Python-wrappers ernaast.
- Door agents ondersteunde reviews waarbij je eerst wilt weten welke subroutines een gedeelde module raken voordat er een numerieke wijziging komt.

## Agentworkflows

- Nagaan welke subroutines en functies een solverroutine aanroepen voordat de argumenten of eenheden veranderen.
- De modules opsommen die een programma-eenheid met `use` binnenhaalt en doorlopen naar hun definities.
- Vinden waar een afgeleid type is gedeclareerd en welke procedures ermee werken.

## Waarom Fortran structuur nodig heeft in plaats van stringmatching

Fortran-codebases zijn vaak oud, groot en geschreven door domeinexperts in plaats van softwareteams. Routines met de namen `SOLVE`, `Solve` en `solve` zijn dezelfde routine. Modules worden door honderden bestanden gedeeld, en de bibliotheek met intrinsieke procedures is zo groot dat een naïeve aanroeplijst vooral uit `SQRT`, `SUM` en `WRITE` bestaat.

Een agent die alleen grept, verdrinkt in die ruis. Maguyva geeft hem eerst de structuur: welke programma-eenheden er zijn, welke modules ze gebruiken en welke eigen routines elkaar aanroepen.

## Wat Maguyva in Fortran extraheert

Maguyva dekt broncode in vaste en vrije vorm (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`). Functies en subroutines worden geëxtraheerd als aanroepbare symbolen, en afgeleide types zijn in structureel zoeken te selecteren als typedefinities.

Het matchen van symbolen is hoofdletterongevoelig, net als Fortran zelf. Importrelaties komen uit `use` en `include`; het sleutelwoord wordt verwijderd, zodat de graaf de modulenaam opslaat. Aanroepen, leesacties, toewijzingen, typeverwijzingen en overerving van uitgebreide afgeleide types maken ook deel uit van de graaf.

Het relatiefilter verwijdert ongeveer 165 intrinsieke procedures (I/O-statements en routines voor wiskunde, arrays, strings, typeconversie en bitbewerking), zodat de overgebleven randen naar je eigen code wijzen.

## Voorbeeldprompts voor agents

- "Welke subroutines roepen `compute_flux` aan, en welke modules gebruiken ze?" (`find_symbol`, daarna `dependency_search` incoming)
- "Volg hoe randvoorwaarden in de solverlus worden toegepast." (`get_task_context`)
- "Zoek elke programma-eenheid die de module `constants` gebruikt." (`text_pattern_search` op `use constants`, daarna `find_symbol`)

## Bekende beperkingen

- Fortran kent geen decorators en geen exceptionafhandeling, dus die relatietypes zijn gemarkeerd als niet van toepassing.
- Typegebonden procedures delen dezelfde nodes als gewone functies en subroutines. Gebruik de preset `functions` in `structural_search`; de preset `methods` selecteert geen Fortran-nodes.
- Aanroepen van gefilterde intrinsieke procedures verschijnen niet als randen in de graaf. Gebruik `text_pattern_search` wanneer je elke `WRITE` of `OPEN` nodig hebt.

## Volgende stappen

Koppel een repository via de [snelstart](/nl/docs/quickstart) en bekijk daarna de volledige ondersteuningsmatrix op de [compatibiliteitspagina](/nl/docs/compatibility). Staat je Fortran naast C-lijmcode, lees dan ook de [C-gids](/nl/languages/c).

## Enginedetails

- Fortran-ondersteuning dekt broncode in vaste en vrije vorm: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` en `.f08`.
- Functies en subroutines zijn aanroepbare symbolen, het matchen van symbolen is hoofdletterongevoelig, en `use` en `include` worden importrelaties.
- Ongeveer 165 intrinsieke procedures (routines voor I/O, wiskunde, arrays, strings, typeconversie en bits) worden uit de relaties gefilterd. Decorator- en exceptionrelaties zijn gemarkeerd als niet van toepassing.

## Nuttige MCP-instappunten

- `find_symbol`: Begin met de naam van de subroutine, functie of module; het matchen is hoofdletterongevoelig, net als Fortran.
- `dependency_search`: Gebruik incoming-traversal op een solver- of gedeelde moduleroutine om vóór een numerieke wijziging elke aanroeper te zien.
- `get_task_context`: Gebruik het voor prompts zoals "volg hoe randvoorwaarden in de solverlus worden toegepast".
