# Fortran sa Maguyva: mga code graph para sa scientific na codebase

Canonical source: https://maguyva.ai/fil/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).

Sinusuportahan ng Maguyva ang Fortran gamit ang AST, mga symbol at graph, para ma-trace ng mga AI agent ang mga subroutine, module at derived type bago baguhin ang numerical code.

## Snapshot ng support

- Antas: Support para sa AST at mga simbolo
- Programming
- Mga extension: .f, .f03, .f08, .f90, .f95, .for, +1 pa
- Tunay na AST parsing para sa syntax-aware search at structural context.
- Pinapagana ng mga named symbol ang semantic lookup at cross-reference. Available ang graph navigation kapag naka-enable ang pagkuha ng mga ugnayan.
- Nag-aambag ang wikang ito ng mga simbolo at ugnayan sa graph-aware search; nag-iiba ang mga sinusuportahang uri ng edge ayon sa mga native construct nito.
- Available ang AST parsing at symbol extraction.

## Pinakabagay

- Mga research, engineering at HPC team na nagme-maintain ng Fortran na solver, simulation o numerical library na mas matanda pa sa kasalukuyang team.
- Mga repository kung saan magkasama ang fixed-form na `.f` file, mga `.f90` module at mas bagong free-form code, madalas katabi ng mga wrapper sa C o Python.
- Mga agent-assisted na review kung saan ang unang hakbang ay alamin kung aling mga subroutine ang humahawak sa isang shared module bago magbago ang numerical logic.

## Mga workflow ng agent

- Hanapin ang mga subroutine at function na tumatawag sa isang solver routine bago baguhin ang mga argument o unit nito.
- Ilista ang mga module na ini-import ng isang program unit gamit ang `use` at pumunta sa mga definition nila.
- Hanapin kung saan dineklara ang isang derived type at kung aling mga procedure ang gumagamit nito.

## Bakit kailangan ng Fortran ang structure, hindi string matching

Karaniwang luma at malaki ang mga Fortran codebase, at isinulat ng mga eksperto sa larangan, hindi ng mga software team. Iisang routine lang ang `SOLVE`, `Solve` at `solve`. Kalat ang mga module sa daan-daang file, at sobrang laki ng library ng intrinsic procedure kaya ang isang simpleng listahan ng mga call ay halos puro `SQRT`, `SUM` at `WRITE`.

Malulunod sa ingay na iyon ang agent na grep lang ang gamit. Ibinibigay muna ng Maguyva ang structure: kung aling mga program unit ang umiiral, anong mga module ang ginagamit nila, at kung aling mga routine sa sarili mong code ang nagtatawagan.

## Ano ang kinukuha ng Maguyva mula sa Fortran

Sakop ng Maguyva ang fixed-form at free-form na source (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`). Kinukuha ang mga function at subroutine bilang mga callable symbol, at puwedeng piliin ang mga derived type bilang type definition sa structural search.

Case-insensitive ang symbol matching, gaya ng Fortran mismo. Galing ang mga import relationship sa mga `use` at `include` statement; tinatanggal ang keyword para pangalan ng module ang naka-store sa graph. Pumapasok din sa graph ang mga call, read, assignment, type reference at inheritance mula sa mga extended derived type.

Tinatanggal ng relationship filter ang mga 165 intrinsic procedure (mga I/O statement at mga routine para sa matematika, array, string, pag-convert ng type at bit manipulation), kaya ang natitirang mga edge ay tumuturo sa sarili mong code.

## Mga halimbawang agent prompt

- "Sino ang tumatawag sa `compute_flux`, at anong mga module ang ginagamit nila?" (`find_symbol`, tapos `dependency_search` na incoming)
- "I-trace kung paano ina-apply ang boundary conditions sa solver loop." (`get_task_context`)
- "Hanapin ang bawat program unit na gumagamit ng `constants` module." (`text_pattern_search` para sa `use constants`, tapos `find_symbol`)

## Mga kilalang limitasyon

- Walang decorator o exception handling ang Fortran, kaya minarkahan ang mga relationship type na iyon bilang hindi applicable.
- Pareho ang node ng mga type-bound procedure at ng ordinaryong function at subroutine. Gamitin ang `functions` preset sa `structural_search`; walang pinipiling Fortran node ang `methods` preset.
- Hindi lumalabas bilang graph edge ang mga call sa mga na-filter na intrinsic. Gamitin ang `text_pattern_search` kapag kailangan mo ang bawat `WRITE` o `OPEN`.

## Mga susunod na hakbang

Mag-connect ng repository gamit ang [quickstart](/fil/docs/quickstart), tapos tingnan ang buong support matrix sa [compatibility page](/fil/docs/compatibility). Kung may kasamang C binding code ang Fortran mo, basahin din ang [gabay sa C](/fil/languages/c).

## Mga detalye ng engine

- Sakop ng Fortran support ang fixed-form at free-form na source: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` at `.f08`.
- Mga callable symbol ang mga function at subroutine, case-insensitive ang symbol matching, at nagiging import relationship ang `use` at `include`.
- Mga 165 intrinsic procedure (mga routine para sa I/O, matematika, array, string, pag-convert ng type at bit) ang nifi-filter mula sa mga relationship. Minarkahang hindi applicable ang mga decorator at exception relationship.

## Mga kapaki-pakinabang na MCP entry point

- `find_symbol`: Magsimula sa pangalan ng subroutine, function o module; hindi pinapansin ng matching ang case, gaya ng Fortran.
- `dependency_search`: Gumamit ng incoming traversal sa isang solver routine o shared module para makita ang lahat ng tumatawag bago ang isang numerical na pagbabago.
- `get_task_context`: Gamitin para sa mga prompt tulad ng “i-trace kung paano ina-apply ang boundary conditions sa solver loop”.
