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

Canonical source: https://maguyva.ai/ar/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 وحدات Pascal وDelphi بشجرة AST والرموز والرسم البياني، ليتمكن وكلاء الذكاء الاصطناعي من رسم خرائط عبارات uses والفئات والإجراءات قبل تغييرها.

## لمحة عن الدعم

- المستوى: دعم AST والرموز
- البرمجة
- الامتدادات: .pas, .pp
- تحليل AST حقيقي لبحث واعٍ بالصياغة النحوية وسياق بنيوي.
- تُغذّي الرموز المسمّاة البحث الدلالي والمراجع المتقاطعة. ويتوفر التنقل عبر الرسم البياني عند تمكين استخراج العلاقات.
- تُسهم هذه اللغة بالرموز والعلاقات في البحث المراعي لبنية الرسم البياني؛ وتختلف أنواع الحواف المدعومة بحسب التراكيب الأصلية في اللغة.
- يتوفر كل من تحليل AST واستخلاص الرموز.

## الأنسب لـ

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

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

- سرد كل وحدة تذكر وحدة مشتركة في عبارة `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` لها.

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

اربط مستودعًا عبر [دليل البدء السريع](/ar/docs/quickstart)، ثم راجع مصفوفة الدعم في [صفحة التوافق](/ar/docs/compatibility). وإذا كان التطبيق يربط مكتبات C، فاقرأ أيضًا [دليل لغة C](/ar/languages/c).

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

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

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

- `find_symbol`: استخدمه مع اسم فئة أو نموذج أو إجراء حين تحتاج إلى التعريف والمراجع.
- `dependency_search`: استخدم التتبّع في الاتجاه الوارد على وحدة مشتركة أو فئة أساسية لرؤية الوحدات والفئات المشتقة التي تعتمد عليها.
- `get_task_context`: استخدمه لمطالبات مثل «اشرح كيف تُرحَّل فاتورة، من معالج الزر إلى وحدة قاعدة البيانات».
