# Ada dalam Maguyva: spesifikasi, badan dan graf pakej

Canonical source: https://maguyva.ai/ms/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 menyokong Ada dengan AST, simbol dan graf, supaya ejen AI boleh menjejak spesifikasi pakej, badan, task dan tagged type dalam sistem Ada yang berusia panjang.

## Gambaran sokongan

- Peringkat: Sokongan AST dan simbol
- Pengaturcaraan
- Sambungan fail: .ada, .adb, .ads
- Penghuraian AST sebenar untuk carian sedar-sintaks dan konteks struktur.
- Simbol bernama menyokong carian semantik dan rujukan silang. Navigasi graf tersedia apabila pengekstrakan hubungan didayakan.
- Bahasa ini menyumbang simbol dan hubungan kepada carian berasaskan graf; jenis edge yang disokong berbeza mengikut binaan aslinya.
- Penghuraian AST dan pengekstrakan simbol kedua-duanya tersedia.

## Paling sesuai

- Pasukan yang menyelenggara Ada berusia panjang dalam aeroangkasa, pertahanan, kereta api atau domain integriti tinggi lain, tempat setiap perubahan disemak.
- Pangkalan kod yang dipecah kepada spesifikasi `.ads` dan badan `.adb`, dengan antara muka dan pelaksanaan berada dalam fail berbeza.
- Jurutera yang menggunakan ejen AI untuk analisis impak dan persediaan semakan, bukan untuk menjana kod tanpa pengawasan.

## Aliran kerja ejen

- Mencari setiap unit yang melakukan `with` pada sesuatu pakej sebelum spesifikasinya berubah.
- Menjejak subprogram yang memanggil sesuatu rutin merentas sempadan pakej.
- Memetakan task type, protected type dan hierarki tagged type sebelum perubahan keserentakan atau reka bentuk.

## Mengapa repositori Ada memerlukan peta pergantungan

Ada memisahkan apa yang dijanjikan oleh pakej (`.ads`) daripada cara ia menunaikannya (`.adb`). Itu kejuruteraan yang baik, dan ia juga bermakna satu perubahan menyentuh banyak fail yang tidak akan dihubungkan oleh carian teks untuk anda. Sistem Ada berusia panjang menambah satu lapisan lagi: generik, tagged type, task dan protected object, yang hubungannya lebih penting daripada mana-mana fail secara bersendirian.

Maguyva memberikan peta pergantungan ini kepada ejen sebelum ia mencadangkan perubahan, tepat mengikut urutan yang dijangka oleh semakan integriti tinggi.

## Apa yang diekstrak oleh Maguyva daripada Ada

Maguyva meliputi `.ads`, `.adb` dan `.ada`. Badan subprogram serta spesifikasi prosedur dan fungsi sama-sama diekstrak sebagai simbol boleh panggil, jadi anda boleh mencari spesifikasi dan badan sesuatu rutin. Padanan simbol tidak sensitif huruf besar kecil, sama seperti Ada sendiri.

Import datang daripada klausa `with` dan `use`; kata kunci dibuang supaya graf menyimpan nama pakej. Graf juga merekodkan panggilan, pewarisan dan penggantian pada tagged type, penginstansian, rujukan jenis, bacaan dan tulisan, serta tepi pembangkitan dan pengendalian pengecualian.

Dalam carian berstruktur, task type, protected type, record type dan interface type boleh dipilih sebagai definisi jenis, dan badan entry sebagai kaedah.

## Contoh gesaan ejen

- "Unit mana yang bergantung pada `Flight_Control.Sensors`, dan subprogram mana yang dipanggil?" (`dependency_search` arah masuk)
- "Tunjukkan spesifikasi dan badan `Compute_Trajectory` serta setiap pemanggilnya." (`find_symbol`)
- "Terangkan cara task telemetri menyerahkan data kepada protected object pengelogan." (`get_task_context`)

## Had yang diketahui

- Ada menggunakan sintaks yang sama untuk sesetengah panggilan, akses medan rekod dan pengindeksan. Maguyva menapis jenis terbina dalam, pakej pustaka standard, fungsi atribut dan operator (kira-kira 113 corak) supaya graf panggilan kekal bersih, jadi panggilan ke pustaka standard tidak menjadi tepi graf. Akses medan rekod dan pengindeksan dibezakan daripada panggilan berdasarkan kedudukannya dalam tatabahasa, bukan senarai nama medan. Panggilan I/O teks biasa seperti `Put_Line`, `Put` dan `Get` dikekalkan dengan sengaja.
- Klausa `use` mengubah keterlihatan tetapi tidak dipilih sebagai import dalam carian berstruktur; klausa `with` dipilih.
- Nod record type dan interface type mungkin serpihan tanpa nama, jadi carian berstruktur berasaskan nama mungkin terlepas. Gunakan `find_symbol` untuk jenis yang bernama.

## Langkah seterusnya

Sambungkan repositori dengan [panduan permulaan pantas](/ms/docs/quickstart), kemudian semak matriks sokongan di [halaman keserasian](/ms/docs/compatibility). Jika kod Ada anda dihubungkan dengan C, baca juga [panduan C](/ms/languages/c).

## Butiran enjin

- Sokongan Ada meliputi spesifikasi `.ads`, badan `.adb` dan fail `.ada`. Badan dan spesifikasi subprogram kedua-duanya simbol boleh panggil.
- Padanan simbol tidak sensitif huruf besar kecil, dan klausa `with` serta `use` menjadi hubungan import selepas kata kunci dibuang.
- Kira-kira 113 jenis terbina dalam, pakej pustaka standard, fungsi atribut dan operator ditapis daripada panggilan; akses medan rekod dan pengindeksan dibezakan daripada panggilan berdasarkan kedudukannya dalam tatabahasa, dan `Put_Line`, `Put` dan `Get` dikekalkan dengan sengaja.

## Titik masuk MCP yang berguna

- `find_symbol`: Gunakan untuk mencari spesifikasi dan badan sesuatu subprogram serentak, bersama rujukannya.
- `dependency_search`: Gunakan penjelajahan arah masuk pada pakej sebelum spesifikasinya berubah, untuk melihat setiap unit yang bergantung padanya.
- `get_task_context`: Gunakan untuk gesaan seperti “terangkan cara task telemetri menyerahkan data kepada protected object pengelogan”.
