# Pascal dan Delphi di Maguyva: graf unit dan kelas

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

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 unit Pascal dan Delphi dengan AST, simbol, dan graf, sehingga agen AI dapat memetakan klausa uses, kelas, dan prosedur sebelum mengubahnya.

## Snapshot dukungan

- Tier: Dukungan AST dan simbol
- Pemrograman
- Ekstensi: .pas, .pp
- 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 aplikasi Delphi atau Lazarus/Free Pascal yang penulis aslinya sudah lama pergi.
- Basis kode Object Pascal dengan hierarki kelas yang dalam, interface, dan unit bersama yang besar.
- Proyek modernisasi atau porting, dengan hasil kerja pertama berupa peta unit dan ketergantungannya.

## Workflow agent

- Mendaftar setiap unit yang mencantumkan unit bersama dalam klausa `uses` sebelum unit itu berubah.
- Menemukan kelas yang mewarisi dari form atau komponen dasar dan metode yang mereka override.
- Menelusuri prosedur yang memanggil sebuah rutin sebelum parameternya berubah.

## Mengapa basis kode Pascal membutuhkan peta lebih dulu

Aplikasi Delphi dan Free Pascal sering tumbuh di sekitar beberapa unit besar yang dipakai oleh semua bagian lain. Form mewarisi dari form dasar, komponen dari komponen dasar, dan aturan bisnis tinggal di prosedur yang dipanggil puluhan layar. Kodenya mudah dibaca berkas demi berkas, tetapi perubahan tersandung di ketergantungan.

Maguyva memberi agen struktur unit dan kelas lebih dulu, sehingga ia dapat mengatakan apa yang disentuh sebuah perubahan sebelum menulis apa pun.

## Apa yang diekstrak Maguyva dari Pascal

Maguyva mencakup unit sumber `.pas` dan `.pp`. Definisi prosedur dan fungsi diekstrak sebagai simbol yang dapat dipanggil, dan kata kunci `procedure`, `function`, `var`, dan `const` dibuang dari nama definisi. Kelas dan interface dapat dipilih sebagai definisi tipe dalam pencarian struktural.

Impor berasal dari klausa `uses`; kata kuncinya dibuang sehingga graf menyimpan nama unit. Panggilan dinormalisasi dengan membuang prefiks anggota, argumen, dan tanda kurung luar, sehingga panggilan yang ditulis `Self.Save(x)` disimpan sebagai `Save`.

Graf mencatat panggilan, pewarisan, implementasi interface, override, instansiasi, referensi tipe, pembacaan dan penulisan, serta edge pemunculan dan penanganan eksepsi. Sekitar 107 rutin pustaka runtime (`WriteLn`, `ReadLn`, `Inc`, `Dec`, `Ord`, dan sejenisnya) difilter dari relasi.

## Contoh prompt agen

- "Unit mana yang menggunakan `DataModuleMain`, dan apa yang mereka panggil darinya?" (`dependency_search` arah masuk)
- "Form mana yang mewarisi dari `TBaseEditForm`, dan metode mana yang mereka override?" (`find_symbol`, lalu `dependency_search`)
- "Jelaskan bagaimana sebuah faktur diposting, dari handler tombol sampai unit basis data." (`get_task_context`)

## Batasan yang diketahui

- Hanya `.pas` dan `.pp` yang dipetakan ke Pascal. Berkas proyek dan form Delphi seperti `.dpr` dan `.dfm` tidak ada dalam daftar ekstensi, sehingga tata letak form dan pengkabelan proyek berada di luar graf.
- Metode memakai sintaks yang sama dengan prosedur bebas, sehingga preset `methods` di `structural_search` tidak memilih apa pun. Gunakan preset `functions`.
- Panggilan ke rutin pustaka runtime yang difilter tidak muncul sebagai edge graf. Gunakan `text_pattern_search` untuk itu.

## Langkah berikutnya

Hubungkan repositori dengan [panduan memulai cepat](/id/docs/quickstart), lalu periksa matriks dukungan di [halaman kompatibilitas](/id/docs/compatibility). Jika aplikasi menautkan pustaka C, baca juga [panduan C](/id/languages/c).

## Detail engine

- Dukungan Pascal mencakup unit `.pas` dan `.pp`. Berkas proyek dan form Delphi seperti `.dpr` dan `.dfm` tidak ada dalam daftar ekstensi.
- Klausa `uses` menjadi relasi impor, dan panggilan dinormalisasi dengan membuang prefiks anggota, argumen, dan tanda kurung luar.
- Sekitar 107 rutin pustaka runtime, seperti `WriteLn`, `Inc`, dan `Ord`, difilter dari relasi agar kode aplikasi menonjol.

## Titik masuk MCP yang berguna

- `find_symbol`: Gunakan dengan nama kelas, form, atau prosedur saat Anda membutuhkan definisi dan referensi.
- `dependency_search`: Gunakan penelusuran arah masuk pada unit bersama atau kelas dasar untuk melihat unit dan turunan mana yang bergantung padanya.
- `get_task_context`: Gunakan untuk prompt seperti “jelaskan bagaimana sebuah faktur diposting, dari handler tombol sampai unit basis data”.
