Langkau ke kandungan
cd /languages
  • Desktop tahan lama
  • Pengaturcaraan
  • Sokongan AST dan simbol

Pascal dan Delphi dalam Maguyva: graf unit dan kelas

Maguyva menyokong unit Pascal dan Delphi dengan AST, simbol dan graf, supaya ejen AI boleh memetakan klausa uses, kelas dan prosedur sebelum mengubahnya.

Mengapa pangkalan kod Pascal memerlukan peta dahulu

Aplikasi Delphi dan Free Pascal selalunya berkembang di sekitar beberapa unit besar yang digunakan oleh semua bahagian lain. Borang mewarisi daripada borang asas, komponen daripada komponen asas, dan peraturan perniagaan tinggal dalam prosedur yang dipanggil oleh berpuluh-puluh skrin. Kod mudah dibaca fail demi fail, tetapi perubahan tersadung pada pergantungan.

Maguyva memberikan struktur unit dan kelas kepada ejen dahulu, supaya ia dapat menyatakan apa yang disentuh oleh sesuatu perubahan sebelum menulis apa-apa.

Apa yang diekstrak oleh Maguyva daripada Pascal

Maguyva meliputi unit sumber .pas dan .pp. Definisi prosedur dan fungsi diekstrak sebagai simbol boleh panggil, dan kata kunci procedure, function, var dan const dibuang daripada nama definisi. Kelas dan antara muka boleh dipilih sebagai definisi jenis dalam carian berstruktur.

Import datang daripada klausa uses; kata kunci dibuang supaya graf menyimpan nama unit. Panggilan dinormalkan dengan membuang awalan ahli, argumen dan kurungan luar, jadi panggilan yang ditulis Self.Save(x) disimpan sebagai Save.

Graf merekodkan panggilan, pewarisan, pelaksanaan antara muka, penggantian, penginstansian, rujukan jenis, bacaan dan tulisan, serta tepi pembangkitan dan pengendalian pengecualian. Kira-kira 107 rutin pustaka masa jalan (WriteLn, ReadLn, Inc, Dec, Ord dan seumpamanya) ditapis daripada hubungan.

Contoh gesaan ejen

  • “Unit mana yang menggunakan DataModuleMain, dan apa yang dipanggil daripadanya?” (dependency_search arah masuk)
  • “Borang mana yang mewarisi daripada TBaseEditForm, dan kaedah mana yang digantikan?” (find_symbol, kemudian dependency_search)
  • “Terangkan cara invois dipos, daripada pengendali butang hingga unit pangkalan data.” (get_task_context)

Had yang diketahui

  • Hanya .pas dan .pp dipetakan kepada Pascal. Fail projek dan borang Delphi seperti .dpr dan .dfm tiada dalam senarai sambungan, jadi susun atur borang dan pendawaian projek berada di luar graf.
  • Kaedah menggunakan sintaks yang sama dengan prosedur bebas, jadi pratetap methods dalam structural_search tidak memilih apa-apa. Gunakan pratetap functions.
  • Panggilan kepada rutin pustaka masa jalan yang ditapis tidak muncul sebagai tepi graf. Gunakan text_pattern_search untuknya.

Langkah seterusnya

Sambungkan repositori dengan panduan permulaan pantas, kemudian semak matriks sokongan di halaman keserasian. Jika aplikasi dipautkan dengan pustaka C, baca juga panduan C.

Paling sesuai

  • > Pasukan yang menyelenggara aplikasi Delphi atau Lazarus/Free Pascal yang penulis asalnya sudah lama pergi.
  • > Pangkalan kod Object Pascal dengan hierarki kelas yang mendalam, antara muka dan unit kongsi yang besar.
  • > Projek pemodenan atau pemindahan platform, dengan hasil pertama berupa peta unit dan pergantungannya.

Aliran kerja ejen

  • > Menyenaraikan setiap unit yang menyebut unit kongsi dalam klausa `uses` sebelum unit itu berubah.
  • > Mencari kelas yang mewarisi daripada borang atau komponen asas dan kaedah yang digantikannya.
  • > Menjejak prosedur yang memanggil sesuatu rutin sebelum parameternya berubah.

Butiran enjin

  • > Sokongan Pascal meliputi unit `.pas` dan `.pp`. Fail projek dan borang Delphi seperti `.dpr` dan `.dfm` tiada dalam senarai sambungan.
  • > Klausa `uses` menjadi hubungan import, dan panggilan dinormalkan dengan membuang awalan ahli, argumen dan kurungan luar.
  • > Kira-kira 107 rutin pustaka masa jalan, seperti `WriteLn`, `Inc` dan `Ord`, ditapis daripada hubungan supaya kod aplikasi lebih menonjol.

Titik masuk MCP yang berguna

  • find_symbol

    Gunakan dengan nama kelas, borang atau prosedur apabila anda memerlukan definisi dan rujukan.

  • dependency_search

    Gunakan penjelajahan arah masuk pada unit kongsi atau kelas asas untuk melihat unit dan keturunan mana yang bergantung padanya.

  • get_task_context

    Gunakan untuk gesaan seperti “terangkan cara invois dipos, daripada pengendali butang hingga unit pangkalan data”.