# لغة Fortran في Maguyva: رسوم بيانية للشيفرة في قواعد الشيفرة العلمية

Canonical source: https://maguyva.ai/ar/languages/fortran

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 لغة Fortran بشجرة AST والرموز والرسم البياني، ليتمكن وكلاء الذكاء الاصطناعي من تتبّع الإجراءات الفرعية والوحدات والأنواع المشتقة قبل تعديل الشيفرة العددية.

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

- المستوى: دعم AST والرموز
- البرمجة
- الامتدادات: .f, .f03, .f08, .f90, .f95, .for, +1 أخرى
- تحليل AST حقيقي لبحث واعٍ بالصياغة النحوية وسياق بنيوي.
- تُغذّي الرموز المسمّاة البحث الدلالي والمراجع المتقاطعة. ويتوفر التنقل عبر الرسم البياني عند تمكين استخراج العلاقات.
- تُسهم هذه اللغة بالرموز والعلاقات في البحث المراعي لبنية الرسم البياني؛ وتختلف أنواع الحواف المدعومة بحسب التراكيب الأصلية في اللغة.
- يتوفر كل من تحليل AST واستخلاص الرموز.

## الأنسب لـ

- فرق البحث والهندسة والحوسبة عالية الأداء التي تصون حلّالات أو محاكيات أو مكتبات عددية بلغة Fortran أقدم من الفريق الحالي.
- المستودعات التي تتعايش فيها ملفات `.f` ثابتة التنسيق مع وحدات `.f90` وشيفرة أحدث حرة التنسيق، غالبًا إلى جانب أغلفة بلغة C أو Python.
- المراجعات بمساعدة الوكلاء، حيث تكون الخطوة الأولى معرفة الإجراءات الفرعية التي تمسّ وحدة مشتركة قبل تغيير المنطق العددي.

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

- العثور على الإجراءات الفرعية والدوال التي تستدعي إجراء الحلّال قبل تغيير وسائطه أو وحداته.
- سرد الوحدات التي تستوردها وحدة برمجية عبر `use` والانتقال إلى تعريفاتها.
- العثور على موضع تعريف نوع مشتق والإجراءات التي تستخدمه.

## لماذا تحتاج Fortran إلى البنية لا إلى مطابقة السلاسل النصية

قواعد شيفرة Fortran قديمة وكبيرة في الغالب، وكتبها خبراء المجال لا فرق البرمجيات. الإجراءات المسماة `SOLVE` و`Solve` و`solve` هي إجراء واحد. تنتشر الوحدات عبر مئات الملفات، ومكتبة الإجراءات المدمجة كبيرة إلى حد أن قائمة الاستدعاءات الساذجة تتكوّن أساسًا من `SQRT` و`SUM` و`WRITE`.

الوكيل الذي يكتفي بـ grep يغرق في هذا الضجيج. يمنحه Maguyva البنية أولًا: الوحدات البرمجية الموجودة، والوحدات التي تستخدمها، والإجراءات في شيفرتك التي يستدعي بعضها بعضًا.

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

يغطي Maguyva الشيفرة المصدرية ثابتة التنسيق وحرة التنسيق (`.f` و`.for` و`.ftn` و`.f90` و`.f95` و`.f03` و`.f08`). تُستخرج الدوال والإجراءات الفرعية رموزًا قابلة للاستدعاء، ويمكن اختيار الأنواع المشتقة تعريفاتِ أنواع في البحث البنيوي.

مطابقة الرموز لا تميّز بين الأحرف الكبيرة والصغيرة، تمامًا مثل Fortran نفسها. تأتي علاقات الاستيراد من عبارات `use` و`include`، وتُحذف الكلمة المفتاحية ليخزّن الرسم البياني اسم الوحدة. وتدخل الرسم البياني أيضًا الاستدعاءات والقراءات والإسنادات ومراجع الأنواع والوراثة من الأنواع المشتقة الموسّعة.

يستبعد مرشّح العلاقات نحو 165 إجراءً مدمجًا (عبارات الإدخال والإخراج، وإجراءات الرياضيات والمصفوفات والسلاسل وتحويل الأنواع ومعالجة البتات)، فتشير الحواف المتبقية إلى شيفرتك أنت.

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

- "من يستدعي `compute_flux`، وما الوحدات التي يستخدمها؟" (`find_symbol` ثم `dependency_search` في الاتجاه الوارد)
- "تتبّع كيف تُطبَّق الشروط الحدّية في حلقة الحلّال." (`get_task_context`)
- "اعثر على كل وحدة برمجية تستخدم الوحدة `constants`." (`text_pattern_search` للعبارة `use constants` ثم `find_symbol`)

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

- لا تحتوي Fortran على مزخرفات ولا على معالجة استثناءات، لذا تُعلَّم أنواع العلاقات هذه بأنها غير منطبقة.
- تتشارك الإجراءات المرتبطة بالأنواع العقد نفسها مع الدوال والإجراءات الفرعية العادية. استخدم الإعداد المسبق `functions` في `structural_search`، فالإعداد `methods` لا يختار أي عقد Fortran.
- لا تظهر الاستدعاءات إلى الإجراءات المدمجة المستبعدة حوافَّ في الرسم البياني. استخدم `text_pattern_search` حين تحتاج إلى كل `WRITE` أو `OPEN`.

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

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

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

- يغطي دعم Fortran الشيفرة المصدرية ثابتة التنسيق وحرة التنسيق: `.f` و`.for` و`.ftn` و`.f90` و`.f95` و`.f03` و`.f08`.
- الدوال والإجراءات الفرعية رموز قابلة للاستدعاء، ومطابقة الرموز لا تميّز بين الأحرف الكبيرة والصغيرة، وتصبح `use` و`include` علاقات استيراد.
- يُستبعد من العلاقات نحو 165 إجراءً مدمجًا (إجراءات الإدخال والإخراج والرياضيات والمصفوفات والسلاسل وتحويل الأنواع والبتات). وتُعلَّم علاقات المزخرفات والاستثناءات بأنها غير منطبقة.

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

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