# Fortran w Maguyva: grafy kodu dla naukowych baz kodu

Canonical source: https://maguyva.ai/pl/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 obsługuje Fortran przez AST, symbole i graf, dzięki czemu agenci AI śledzą podprogramy, moduły i typy pochodne przed zmianą kodu numerycznego.

## Migawka wsparcia

- Poziom: Obsługa AST i symboli
- Programowanie
- Rozszerzenia: .f, .f03, .f08, .f90, .f95, .for, +1 więcej
- Prawdziwe parsowanie AST dla wyszukiwania świadomego składni i kontekstu strukturalnego.
- Nazwane symbole zasilają wyszukiwanie semantyczne i wzajemne odwołania. Nawigacja po grafie jest dostępna po włączeniu ekstrakcji relacji.
- Ten język dostarcza symbole i relacje do wyszukiwania uwzględniającego graf; obsługiwane typy krawędzi zależą od jego rodzimych konstrukcji.
- Dostępne są zarówno parsowanie AST, jak i ekstrakcja symboli.

## Najlepsze dopasowanie

- Zespoły badawcze, inżynierskie i HPC utrzymujące solwery, symulacje lub biblioteki numeryczne w Fortranie starsze niż obecny zespół.
- Repozytoria, w których pliki `.f` w formacie stałym sąsiadują z modułami `.f90` i nowszymi w formacie swobodnym, często obok wrapperów w C lub w języku Python.
- Przeglądy wspierane przez agentów, w których najpierw trzeba ustalić, które podprogramy dotykają współdzielonego modułu przed zmianą numeryki.

## Workflow agentów

- Prześledzić, które podprogramy i funkcje wywołują procedurę solwera, zanim zmienią się jej argumenty lub jednostki.
- Wypisać moduły, które jednostka programu importuje przez `use`, i przejść do ich definicji.
- Znaleźć miejsce deklaracji typu pochodnego i procedury, które z niego korzystają.

## Dlaczego Fortran potrzebuje struktury, a nie dopasowywania tekstu

Bazy kodu w Fortranie są zwykle stare, duże i pisane przez ekspertów dziedzinowych, a nie zespoły programistyczne. Procedury o nazwach `SOLVE`, `Solve` i `solve` to ta sama procedura. Moduły są współdzielone przez setki plików, a biblioteka procedur wbudowanych jest tak duża, że naiwna lista wywołań składa się głównie z `SQRT`, `SUM` i `WRITE`.

Agent, który używa tylko grepa, tonie w tym szumie. Maguyva najpierw daje mu strukturę: jakie jednostki programu istnieją, jakich modułów używają i które własne procedury wywołują się nawzajem.

## Co Maguyva wyodrębnia w Fortranie

Maguyva obejmuje kod źródłowy w formacie stałym i swobodnym (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`). Funkcje i podprogramy są wyodrębniane jako symbole wywoływalne, a typy pochodne można wybrać jako definicje typów w wyszukiwaniu strukturalnym.

Dopasowywanie symboli nie rozróżnia wielkości liter, tak jak sam Fortran. Relacje importu pochodzą z `use` i `include`; słowo kluczowe jest usuwane, więc graf przechowuje nazwę modułu. Wywołania, odczyty, przypisania, odwołania do typów i dziedziczenie z rozszerzonych typów pochodnych również są częścią grafu.

Filtr relacji pomija około 165 procedur wbudowanych (instrukcje wejścia/wyjścia oraz procedury matematyczne, tablicowe, tekstowe, konwersji typów i operacji na bitach), więc pozostałe krawędzie wskazują na Twój własny kod.

## Przykładowe prompty dla agentów

- „Które podprogramy wywołują `compute_flux` i jakich modułów używają?” (`find_symbol`, potem `dependency_search` incoming)
- „Prześledź, jak warunki brzegowe są stosowane w pętli solwera.” (`get_task_context`)
- „Znajdź wszystkie jednostki programu, które używają modułu `constants`.” (`text_pattern_search` dla `use constants`, potem `find_symbol`)

## Znane ograniczenia

- Fortran nie ma dekoratorów ani obsługi wyjątków, więc te typy relacji są oznaczone jako nie dotyczy.
- Procedury związane z typem współdzielą te same węzły co zwykłe funkcje i podprogramy. Użyj presetu `functions` w `structural_search`; preset `methods` nie wybiera żadnych węzłów Fortranu.
- Wywołania odfiltrowanych procedur wbudowanych nie pojawiają się jako krawędzie grafu. Gdy potrzebujesz każdego `WRITE` lub `OPEN`, użyj `text_pattern_search`.

## Kolejne kroki

Podłącz repozytorium za pomocą [szybkiego startu](/pl/docs/quickstart), a potem sprawdź pełną macierz obsługi na [stronie zgodności](/pl/docs/compatibility). Jeśli Twój Fortran współistnieje z kodem łączącym w C, przeczytaj też [przewodnik po C](/pl/languages/c).

## Szczegóły silnika

- Obsługa Fortranu obejmuje kod źródłowy w formacie stałym i swobodnym: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` i `.f08`.
- Funkcje i podprogramy są symbolami wywoływalnymi, dopasowywanie symboli nie rozróżnia wielkości liter, a `use` i `include` stają się relacjami importu.
- Około 165 procedur wbudowanych (procedury wejścia/wyjścia, matematyczne, tablicowe, tekstowe, konwersji typów i bitowe) jest filtrowanych z relacji. Relacje dekoratorów i wyjątków są oznaczone jako nie dotyczy.

## Przydatne punkty wejścia MCP

- `find_symbol`: Zacznij od nazwy podprogramu, funkcji lub modułu; dopasowanie ignoruje wielkość liter, tak jak Fortran.
- `dependency_search`: Użyj przejścia incoming na procedurze solwera lub współdzielonego modułu, aby przed zmianą numeryczną zobaczyć wszystkich wywołujących.
- `get_task_context`: Używaj go do promptów typu „prześledź, jak warunki brzegowe są stosowane w pętli solwera”.
