# Ada di Maguyva: spesifikasi, badan, dan graf paket

Canonical source: https://maguyva.ai/id/languages/ada

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 Ada dengan AST, simbol, dan graf, sehingga agen AI dapat menelusuri spesifikasi paket, badan, task, dan tagged type dalam sistem Ada yang berumur panjang.

## Snapshot dukungan

- Tier: Dukungan AST dan simbol
- Pemrograman
- Ekstensi: .ada, .adb, .ads
- 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 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.

## 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](/id/docs/quickstart), lalu periksa matriks dukungan di [halaman kompatibilitas](/id/docs/compatibility). Jika kode Ada Anda terhubung dengan C, baca juga [panduan C](/id/languages/c).

## 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”.
