# Fortran di Maguyva: graf kode untuk basis kode ilmiah

Canonical source: https://maguyva.ai/id/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 mendukung Fortran dengan AST, simbol, dan graf, sehingga agen AI dapat menelusuri subrutin, modul, dan derived type sebelum mengubah kode numerik.

## Snapshot dukungan

- Tier: Dukungan AST dan simbol
- Pemrograman
- Ekstensi: .f, .f03, .f08, .f90, .f95, .for, +1 lagi
- Parsing AST sungguhan untuk pencarian sadar-syntax dan konteks struktural.
- Simbol bernama menggerakkan pencarian semantik dan cross-reference. Navigasi graf tersedia saat ekstraksi relasi diaktifkan.
- Bahasa ini menyumbangkan simbol dan relasi ke pencarian berbasis graf; jenis edge yang didukung bervariasi sesuai konstruk bawaan bahasa tersebut.
- Parsing AST dan ekstraksi simbol sama-sama tersedia.

## Paling cocok untuk

- Tim riset, rekayasa, dan HPC yang memelihara solver, simulasi, atau pustaka numerik Fortran yang lebih tua dari tim saat ini.
- Repositori tempat berkas `.f` berformat tetap hidup berdampingan dengan modul `.f90` dan kode berformat bebas yang lebih baru, sering kali bersama wrapper C atau Python.
- Tinjauan berbantuan agen, dengan langkah pertama mencari subrutin mana yang menyentuh modul bersama sebelum logika numerik berubah.

## Workflow agent

- Menemukan subrutin dan fungsi yang memanggil rutin solver sebelum argumen atau satuannya berubah.
- Mendaftar modul yang diimpor sebuah unit program dengan `use` dan melompat ke definisinya.
- Menemukan tempat sebuah derived type dideklarasikan dan prosedur yang menggunakannya.

## Mengapa Fortran butuh struktur, bukan pencocokan string

Basis kode Fortran biasanya tua dan besar, ditulis oleh pakar bidang, bukan tim perangkat lunak. Rutin bernama `SOLVE`, `Solve`, dan `solve` adalah rutin yang sama. Modul tersebar di ratusan berkas, dan pustaka prosedur intrinsik begitu besar sehingga daftar panggilan yang naif sebagian besar berisi `SQRT`, `SUM`, dan `WRITE`.

Agen yang hanya mengandalkan grep akan tenggelam dalam derau itu. Maguyva memberinya struktur lebih dulu: unit program apa saja yang ada, modul apa yang dipakai, dan rutin mana dalam kode Anda sendiri yang saling memanggil.

## Apa yang diekstrak Maguyva dari Fortran

Maguyva mencakup sumber berformat tetap dan berformat bebas (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`). Fungsi dan subrutin diekstrak sebagai simbol yang dapat dipanggil, dan derived type dapat dipilih sebagai definisi tipe dalam pencarian struktural.

Pencocokan simbol tidak peka huruf besar-kecil, sama seperti Fortran itu sendiri. Relasi impor berasal dari pernyataan `use` dan `include`; kata kuncinya dibuang sehingga graf menyimpan nama modul. Panggilan, pembacaan, penugasan, referensi tipe, dan pewarisan dari derived type yang diperluas juga masuk ke graf.

Filter relasi membuang sekitar 165 prosedur intrinsik (pernyataan I/O serta rutin matematika, larik, string, konversi tipe, dan manipulasi bit), sehingga edge yang tersisa menunjuk ke kode Anda sendiri.

## Contoh prompt agen

- "Siapa yang memanggil `compute_flux`, dan modul apa yang mereka gunakan?" (`find_symbol`, lalu `dependency_search` arah masuk)
- "Telusuri bagaimana syarat batas diterapkan di loop solver." (`get_task_context`)
- "Temukan setiap unit program yang menggunakan modul `constants`." (`text_pattern_search` untuk `use constants`, lalu `find_symbol`)

## Batasan yang diketahui

- Fortran tidak memiliki decorator maupun penanganan eksepsi, sehingga jenis relasi tersebut ditandai tidak berlaku.
- Prosedur yang terikat tipe berbagi node yang sama dengan fungsi dan subrutin biasa. Gunakan preset `functions` di `structural_search`; preset `methods` tidak memilih node Fortran apa pun.
- Panggilan ke intrinsik yang difilter tidak muncul sebagai edge graf. Gunakan `text_pattern_search` saat Anda membutuhkan setiap `WRITE` atau `OPEN`.

## Langkah berikutnya

Hubungkan repositori dengan [panduan memulai cepat](/id/docs/quickstart), lalu periksa matriks dukungan lengkap di [halaman kompatibilitas](/id/docs/compatibility). Jika Fortran Anda hidup berdampingan dengan kode binding C, baca juga [panduan C](/id/languages/c).

## Detail engine

- Dukungan Fortran mencakup sumber berformat tetap dan berformat bebas: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, dan `.f08`.
- Fungsi dan subrutin adalah simbol yang dapat dipanggil, pencocokan simbol tidak peka huruf besar-kecil, dan `use` serta `include` menjadi relasi impor.
- Sekitar 165 prosedur intrinsik (rutin I/O, matematika, larik, string, konversi tipe, dan bit) difilter dari relasi. Relasi decorator dan eksepsi ditandai tidak berlaku.

## Titik masuk MCP yang berguna

- `find_symbol`: Mulailah dari nama subrutin, fungsi, atau modul; pencocokan mengabaikan huruf besar-kecil seperti Fortran.
- `dependency_search`: Gunakan penelusuran arah masuk pada rutin solver atau modul bersama untuk melihat semua pemanggil sebelum perubahan numerik.
- `get_task_context`: Gunakan untuk prompt seperti “telusuri bagaimana syarat batas diterapkan di loop solver”.
