تخطَّ إلى المحتوى
cd /languages
  • سطح مكتب طويل العمر
  • البرمجة
  • دعم AST والرموز

لغتا Pascal وDelphi في Maguyva: رسوم بيانية للوحدات والفئات

يدعم Maguyva وحدات Pascal وDelphi بشجرة AST والرموز والرسم البياني، ليتمكن وكلاء الذكاء الاصطناعي من رسم خرائط عبارات uses والفئات والإجراءات قبل تغييرها.

لماذا تحتاج قاعدة شيفرة Pascal إلى خريطة أولًا

غالبًا ما تنمو تطبيقات Delphi وFree Pascal حول بضع وحدات كبيرة يستخدمها كل شيء آخر. ترث النماذج من نماذج أساسية، والمكوّنات من مكوّنات أساسية، وتعيش قواعد العمل في إجراءات تستدعيها عشرات الشاشات. تُقرأ الشيفرة بسهولة ملفًا ملفًا، لكن التغييرات تتعثر عند الاعتماديات.

يمنح Maguyva الوكيل بنية الوحدات والفئات أولًا، ليستطيع أن يقول ما الذي يمسّه التغيير قبل أن يكتب أي شيء.

ما الذي يستخرجه Maguyva من Pascal

يغطي Maguyva وحدات الشيفرة المصدرية .pas و.pp. تُستخرج تعريفات الإجراءات والدوال رموزًا قابلة للاستدعاء، وتُحذف الكلمات المفتاحية procedure وfunction وvar وconst من أسماء التعريفات. ويمكن اختيار الفئات والواجهات تعريفاتِ أنواع في البحث البنيوي.

تأتي الاستيرادات من عبارات uses، وتُحذف الكلمة المفتاحية ليخزّن الرسم البياني أسماء الوحدات. وتُوحَّد الاستدعاءات بحذف بادئات الأعضاء والوسائط والأقواس الخارجية، فيُخزَّن الاستدعاء المكتوب Self.Save(x) على أنه Save.

يسجّل الرسم البياني الاستدعاءات والوراثة وتنفيذ الواجهات والتجاوزات وإنشاء المثيلات ومراجع الأنواع والقراءات والكتابات وحواف إطلاق الاستثناءات ومعالجتها. ويُستبعد من العلاقات نحو 107 إجراءات من مكتبة وقت التشغيل (WriteLn وReadLn وInc وDec وOrd وما شابهها).

أمثلة على مطالبات الوكلاء

  • “ما الوحدات التي تستخدم DataModuleMain، وماذا تستدعي منها؟” (dependency_search في الاتجاه الوارد)
  • “ما النماذج التي ترث من TBaseEditForm، وما الأساليب التي تتجاوزها؟” (find_symbol ثم dependency_search)
  • “اشرح كيف تُرحَّل فاتورة، من معالج الزر إلى وحدة قاعدة البيانات.” (get_task_context)

القيود المعروفة

  • لا يُربط بلغة Pascal إلا .pas و.pp. ملفات مشاريع Delphi ونماذجها مثل .dpr و.dfm ليست في قائمة الامتدادات، لذا تبقى تخطيطات النماذج وربط المشروع خارج الرسم البياني.
  • تستخدم الأساليب الصياغة نفسها التي تستخدمها الإجراءات الحرة، لذا لا يختار الإعداد المسبق methods في structural_search أي شيء. استخدم الإعداد المسبق functions.
  • لا تظهر الاستدعاءات إلى إجراءات مكتبة وقت التشغيل المستبعدة حوافَّ في الرسم البياني. استخدم text_pattern_search لها.

الخطوات التالية

اربط مستودعًا عبر دليل البدء السريع، ثم راجع مصفوفة الدعم في صفحة التوافق. وإذا كان التطبيق يربط مكتبات C، فاقرأ أيضًا دليل لغة C.

الأنسب لـ

  • > الفرق التي تصون تطبيقات Delphi أو Lazarus/Free Pascal رحل كاتبوها الأصليون منذ زمن.
  • > قواعد شيفرة Object Pascal ذات هرميات فئات عميقة وواجهات ووحدات مشتركة كبيرة.
  • > مشاريع التحديث أو النقل، حيث يكون أول مُخرَج خريطةً للوحدات واعتمادياتها.

سير عمل الوكلاء

  • > سرد كل وحدة تذكر وحدة مشتركة في عبارة `uses` قبل تغييرها.
  • > العثور على الفئات التي ترث من نموذج أساسي أو مكوّن أساسي والأساليب التي تتجاوزها.
  • > تتبّع الإجراءات التي تستدعي إجراءً قبل تغيير معاملاته.

تفاصيل المحرك

  • > يغطي دعم Pascal وحدات `.pas` و`.pp`. ملفات مشاريع Delphi ونماذجها مثل `.dpr` و`.dfm` ليست في قائمة الامتدادات.
  • > تصبح عبارات `uses` علاقات استيراد، وتُوحَّد الاستدعاءات بحذف بادئات الأعضاء والوسائط والأقواس الخارجية.
  • > يُستبعد من العلاقات نحو 107 إجراءات من مكتبة وقت التشغيل، مثل `WriteLn` و`Inc` و`Ord`، لتبرز شيفرة التطبيق.

نقاط دخول مفيدة عبر MCP

  • find_symbol

    استخدمه مع اسم فئة أو نموذج أو إجراء حين تحتاج إلى التعريف والمراجع.

  • dependency_search

    استخدم التتبّع في الاتجاه الوارد على وحدة مشتركة أو فئة أساسية لرؤية الوحدات والفئات المشتقة التي تعتمد عليها.

  • get_task_context

    استخدمه لمطالبات مثل «اشرح كيف تُرحَّل فاتورة، من معالج الزر إلى وحدة قاعدة البيانات».