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

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

يدعم Maguyva لغة Fortran بشجرة AST والرموز والرسم البياني، ليتمكن وكلاء الذكاء الاصطناعي من تتبّع الإجراءات الفرعية والوحدات والأنواع المشتقة قبل تعديل الشيفرة العددية.

لماذا تحتاج 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.

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

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

الأنسب لـ

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

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

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

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

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

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

  • find_symbol

    ابدأ باسم الإجراء الفرعي أو الدالة أو الوحدة؛ المطابقة تتجاهل حالة الأحرف كما تفعل Fortran.

  • dependency_search

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

  • get_task_context

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