Lompat ke konten
cd /languages
  • Kode integritas tinggi
  • Pemrograman
  • Dukungan AST dan simbol

Ada di Maguyva: spesifikasi, badan, dan graf paket

Maguyva mendukung Ada dengan AST, simbol, dan graf, sehingga agen AI dapat menelusuri spesifikasi paket, badan, task, dan tagged type dalam sistem Ada yang berumur panjang.

Mengapa repositori Ada membutuhkan peta ketergantungan

Ada memisahkan apa yang dijanjikan sebuah paket (.ads) dari cara ia memenuhinya (.adb). Itu rekayasa yang baik, dan juga berarti satu perubahan menyentuh banyak berkas yang tidak akan dihubungkan oleh pencarian teks untuk Anda. Sistem Ada berumur panjang menambahkan satu lapisan lagi: generic, tagged type, task, dan protected object, yang relasinya lebih penting daripada berkas mana pun secara tersendiri.

Maguyva memberi agen peta ketergantungan ini sebelum ia mengusulkan perubahan, tepat dalam urutan yang diharapkan tinjauan integritas tinggi.

Apa yang diekstrak Maguyva dari Ada

Maguyva mencakup .ads, .adb, dan .ada. Badan subprogram serta spesifikasi prosedur dan fungsi sama-sama diekstrak sebagai simbol yang dapat dipanggil, sehingga Anda dapat mencari spesifikasi dan badan sebuah rutin. Pencocokan simbol tidak peka huruf besar-kecil, sama seperti Ada itu sendiri.

Impor berasal dari klausa with dan use; kata kuncinya dibuang sehingga graf menyimpan nama paket. Graf juga mencatat panggilan, pewarisan dan override pada tagged type, instansiasi, referensi tipe, pembacaan dan penulisan, serta edge pemunculan dan penanganan eksepsi.

Dalam pencarian struktural, task type, protected type, record type, dan interface type dapat dipilih sebagai definisi tipe, dan badan entry sebagai metode.

Contoh prompt agen

  • “Unit mana yang bergantung pada Flight_Control.Sensors, dan subprogram mana yang mereka panggil?” (dependency_search arah masuk)
  • “Tampilkan spesifikasi dan badan Compute_Trajectory beserta setiap pemanggilnya.” (find_symbol)
  • “Jelaskan bagaimana task telemetri menyerahkan data ke protected object pencatatan log.” (get_task_context)

Batasan yang diketahui

  • Ada memakai sintaks yang sama untuk sebagian panggilan, akses field record, dan pengindeksan. Maguyva memfilter tipe bawaan, paket pustaka standar, fungsi atribut, dan operator (sekitar 113 pola) agar graf panggilan tetap bersih, sehingga panggilan ke pustaka standar tidak menjadi edge graf. Akses field record dan pengindeksan dibedakan dari panggilan berdasarkan posisinya dalam tata bahasa, bukan berdasarkan daftar nama field. Panggilan I/O teks umum seperti Put_Line, Put, dan Get sengaja dipertahankan.
  • Klausa use mengubah visibilitas tetapi tidak dipilih sebagai impor dalam pencarian struktural; klausa with dipilih.
  • Node record type dan interface type dapat berupa fragmen tanpa nama, sehingga pencarian struktural berbasis nama bisa melewatkannya. Gunakan find_symbol untuk tipe yang bernama.

Langkah berikutnya

Hubungkan repositori dengan panduan memulai cepat, lalu periksa matriks dukungan di halaman kompatibilitas. Jika kode Ada Anda terhubung dengan C, baca juga panduan C.

Paling cocok untuk

  • > Tim yang memelihara Ada berumur panjang di bidang kedirgantaraan, pertahanan, perkeretaapian, atau domain integritas tinggi lain, tempat setiap perubahan ditinjau.
  • > Basis kode yang terbagi menjadi spesifikasi `.ads` dan badan `.adb`, dengan interface dan implementasi berada di berkas yang berbeda.
  • > Insinyur yang menggunakan agen AI untuk analisis dampak dan persiapan tinjauan, bukan untuk menghasilkan kode tanpa pengawasan.

Workflow agent

  • > Menemukan setiap unit yang melakukan `with` pada sebuah paket sebelum spesifikasinya berubah.
  • > Menelusuri subprogram yang memanggil sebuah rutin lintas batas paket.
  • > Memetakan task type, protected type, dan hierarki tagged type sebelum perubahan konkurensi atau desain.

Detail engine

  • > Dukungan Ada mencakup spesifikasi `.ads`, badan `.adb`, dan berkas `.ada`. Badan dan spesifikasi subprogram sama-sama simbol yang dapat dipanggil.
  • > Pencocokan simbol tidak peka huruf besar-kecil, dan klausa `with` serta `use` menjadi relasi impor setelah kata kuncinya dibuang.
  • > Sekitar 113 tipe bawaan, paket pustaka standar, fungsi atribut, dan operator difilter dari panggilan; akses field record dan pengindeksan dibedakan dari panggilan berdasarkan posisinya dalam tata bahasa, dan `Put_Line`, `Put`, dan `Get` sengaja dipertahankan.

Titik masuk MCP yang berguna

  • find_symbol

    Gunakan untuk menemukan spesifikasi dan badan sebuah subprogram sekaligus, beserta referensinya.

  • dependency_search

    Gunakan penelusuran arah masuk pada sebuah paket sebelum spesifikasinya berubah, untuk melihat setiap unit yang bergantung padanya.

  • get_task_context

    Gunakan untuk prompt seperti “jelaskan bagaimana task telemetri menyerahkan data ke protected object pencatatan log”.