Langkau ke kandungan
cd /languages
  • Warisan saintifik
  • Pengaturcaraan
  • Sokongan AST dan simbol

Fortran dalam Maguyva: graf kod untuk pangkalan kod saintifik

Maguyva menyokong Fortran dengan AST, simbol dan graf, supaya ejen AI boleh menjejak subrutin, modul dan derived type sebelum mengubah kod berangka.

Mengapa Fortran memerlukan struktur, bukan padanan rentetan

Pangkalan kod Fortran biasanya lama dan besar, ditulis oleh pakar bidang dan bukan pasukan perisian. Rutin bernama SOLVE, Solve dan solve ialah rutin yang sama. Modul tersebar di ratusan fail, dan pustaka prosedur intrinsik begitu besar sehingga senarai panggilan yang naif kebanyakannya terdiri daripada SQRT, SUM dan WRITE.

Ejen yang hanya menggunakan grep akan tenggelam dalam hingar itu. Maguyva memberikan struktur kepadanya dahulu: unit program yang wujud, modul yang digunakan, dan rutin dalam kod anda sendiri yang saling memanggil.

Apa yang diekstrak oleh Maguyva daripada Fortran

Maguyva meliputi sumber format tetap dan format bebas (.f, .for, .ftn, .f90, .f95, .f03, .f08). Fungsi dan subrutin diekstrak sebagai simbol boleh panggil, dan derived type boleh dipilih sebagai definisi jenis dalam carian berstruktur.

Padanan simbol tidak sensitif huruf besar kecil, sama seperti Fortran sendiri. Hubungan import datang daripada pernyataan use dan include; kata kunci dibuang supaya graf menyimpan nama modul. Panggilan, bacaan, umpukan, rujukan jenis dan pewarisan daripada derived type yang dilanjutkan juga dimasukkan ke dalam graf.

Penapis hubungan membuang kira-kira 165 prosedur intrinsik (pernyataan I/O serta rutin matematik, tatasusunan, rentetan, penukaran jenis dan manipulasi bit), supaya tepi yang tinggal menunjuk kepada kod anda sendiri.

Contoh gesaan ejen

  • “Siapa yang memanggil compute_flux, dan modul apa yang mereka gunakan?” (find_symbol, kemudian dependency_search arah masuk)
  • “Jejaki cara syarat sempadan digunakan dalam gelung penyelesai.” (get_task_context)
  • “Cari setiap unit program yang menggunakan modul constants.” (text_pattern_search untuk use constants, kemudian find_symbol)

Had yang diketahui

  • Fortran tiada decorator dan tiada pengendalian pengecualian, jadi jenis hubungan tersebut ditanda sebagai tidak berkenaan.
  • Prosedur terikat jenis berkongsi nod yang sama dengan fungsi dan subrutin biasa. Gunakan pratetap functions dalam structural_search; pratetap methods tidak memilih sebarang nod Fortran.
  • Panggilan kepada intrinsik yang ditapis tidak muncul sebagai tepi graf. Gunakan text_pattern_search apabila anda memerlukan setiap WRITE atau OPEN.

Langkah seterusnya

Sambungkan repositori dengan panduan permulaan pantas, kemudian semak matriks sokongan penuh di halaman keserasian. Jika Fortran anda wujud bersama kod pengikat C, baca juga panduan C.

Paling sesuai

  • > Pasukan penyelidikan, kejuruteraan dan HPC yang menyelenggara penyelesai, simulasi atau pustaka berangka Fortran yang lebih tua daripada pasukan semasa.
  • > Repositori yang fail `.f` format tetap wujud bersama modul `.f90` dan kod format bebas yang lebih baharu, selalunya di samping pembalut C atau Python.
  • > Semakan dibantu ejen, dengan langkah pertama mencari subrutin yang menyentuh modul kongsi sebelum logik berangka berubah.

Aliran kerja ejen

  • > Mencari subrutin dan fungsi yang memanggil rutin penyelesai sebelum argumen atau unitnya berubah.
  • > Menyenaraikan modul yang diimport oleh unit program melalui `use` dan melompat ke definisinya.
  • > Mencari tempat derived type diisytiharkan dan prosedur yang menggunakannya.

Butiran enjin

  • > Sokongan Fortran meliputi sumber format tetap dan format bebas: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` dan `.f08`.
  • > Fungsi dan subrutin ialah simbol boleh panggil, padanan simbol tidak sensitif huruf besar kecil, dan `use` serta `include` menjadi hubungan import.
  • > Kira-kira 165 prosedur intrinsik (rutin I/O, matematik, tatasusunan, rentetan, penukaran jenis dan bit) ditapis daripada hubungan. Hubungan decorator dan pengecualian ditanda sebagai tidak berkenaan.

Titik masuk MCP yang berguna

  • find_symbol

    Mulakan dengan nama subrutin, fungsi atau modul; padanan mengabaikan huruf besar kecil seperti Fortran.

  • dependency_search

    Gunakan penjelajahan arah masuk pada rutin penyelesai atau modul kongsi untuk melihat semua pemanggil sebelum perubahan berangka.

  • get_task_context

    Gunakan untuk gesaan seperti “jejaki cara syarat sempadan digunakan dalam gelung penyelesai”.