Fypp هو معالج مسبق مدعوم من Python. يمكن استخدامه في أي لغات برمجة ، لكن هدفها الأساسي هو تقديم معالج مسبق Fortran ، مما يساعد على تمديد Fortran مع إمكانيات التجميع والقوالب. بدلاً من إدخال بناء جملة التعبير الخاص به ، فإنه يستخدم تعبيرات Python في توجيهات المعالج المسبق ، مما يوفر تناسقًا وتنوعًا للثعبان عند صياغة مهام metaprogramming. يركز بشدة على المتانة وعلى التكامل الأنيق في تطوير أدوات.
يتم استضافة المشروع على جيثب.
الوثائق التفصيلية متوفرة على readTheDocs.org.
يتم إصدار FYPP بموجب ترخيص BSD 2-Cause .
تعريف وتقييم وإزالة المتغيرات:
#: إذا تصحيح> 0 طباعة *، "بعض معلومات التصحيح" #: Endif #: تعيين loglevel = 2 طباعة *، "Loglevel: $ {loglevel} $" #: Del Loglevel
تعريفات الماكرو والمكالمات الكلية:
#: Def Assert (cond) #: إذا تصحيح> 0 إذا (. لا. $ {cond} $) ثم طباعة *، "فشلت Assert في الملف $ {_ file _} $ ، السطر $ {_ line _} $" توقف الخطأ إنهاء إذا #: Endif #: enddef تأكيد ! تم الاحتجاج به عبر المكالمة المباشرة (لا تحتاج الوسيطة إلى أي اقتباس) @: Assert (Size (myarray)> 0) ! تم الاحتجاج به كتعبير Python (تحتاج الحجة إلى اقتباس) $: تأكيد ('الحجم (myarray)> 0')
الإخراج الشرطي:
اختبار البرنامج #: إذا تم تعريفه ('with_mpi') استخدم MPI #: تعريف ELIF ('with_openmp') استخدم OpenMP #:آخر استخدم المسلسل #: Endif
الإخراج المتكرر (على سبيل المثال لتوليد قوالب فورتران):
واجهة myfunc #: من أجل dtype في ['Real' ، 'Dreal' ، 'Complex' ، 'Dcomplex'] إجراءات الوحدة النمطية myfunc _ $ {dtype} $ #: endfor نهاية واجهة myfunc
التوجيهات المضمنة:
منطقي ، المعلمة :: hasmpi = # {إذا تم تعريفه ('mpi')} # .true. # {else}# .false. #{endif}#
إدراج تعبيرات الثعبان التعسفية:
الحرف (*) ، المعلمة :: comp_date = "$ {time.strftime ('٪ y- ٪ m- ٪ d')} $"
إدراج الملفات أثناء المعالجة المسبقة:
#: قم بتضمين "Macrodefs.fypp"
باستخدام خطوط مستمرة على غرار Fortran في توجيهات المعالج المسبق:
#: إذا var1> var2 & & أو var2> var4 طباعة *، "القيام بشيء هنا" #: Endif
تمرير وسيطات سلسلة متعددة الأسلحة (غير معروفة) إلى Callables:
#! احتياجات قابلة للاتصال فقط وسيطة سلسلة #: def debug_code (رمز) #: إذا تصحيح> 0 $: رمز #: Endif #: enddef debug_code #! تمرير كتلة الكود كوسيطة موضعية أولى #: كتلة debug_code إذا (الحجم (صفيف)> 100) ثم طباعة *، "تصحيح: صفيف كبير بشكل زاحف" إنهاء إذا #: endblock debug_code #! الاحتياجات القابلة للاتصال أيضًا بأنواع الحجج غير الشريطية #: def repert_code (رمز ، كرر) #: لـ Ind in Range (كرر) $: رمز #: endfor #: enddef REFERE_CODE #! تمرير كتلة الكود كوسيطة موضعية و 3 كوسيطة للكلمة الرئيسية "كرر" #: Block REFERE_CODE (كرر = 3) سيتم تكرار هذا 3 مرات #: endblock Repert_code
تعليقات ما قبل المعالج:
#! هذا لن يظهر في الإخراج #! كما سيتم قمع الشخصيات الجديدة في نهاية السطور
قمع الإخراج المسبق في المناطق المختارة:
#! تتم قراءة التعاريف ، ولكن لن يتم إنتاج أي إخراج (مثل الخطوط الجديدة) #:صامت #: قم بتضمين "Macrodefs.fypp" #: endmute
طلب صريح لإيقاف المعالج المسبق:
#: إذا كان Debuglevel <0 #: توقف "مستوى التصحيح السلبي غير المسموح به!" #: Endif
من السهل التحقق من عقل المعلمة الماكرو:
#: DEF MYMACRO (رتبة) #! يعمل الماكرو فقط للرتبة 1 وما فوق #: تأكيد رتبة> 0 : #: enddef mymacro
توجيهات ترقيم الخط في الإخراج:
اختبار البرنامج #: إذا تم تعريفها ('mpi') استخدم MPI #: Endif :
تحول إلى
# 1 "test.fypp" 1 اختبار البرنامج # 3 "test.fypp" استخدم MPI # 5 "test.fypp" :
عندما يتم تعريف MPI
المتغير وتم توجيه FYPP لإنشاء علامات خط.
طي تلقائي للخطوط المولدة التي تتجاوز حد طول الخط
تحتاج FYPP إلى مترجم Python 3 العاملة (Python 3.5 أو أعلى).
عند تثبيت Fypp ، يمكنك الحصول على أداة سطر الأوامر fypp
و Python Module fypp.py
أخيرًا ، يمكنك الاستيراد إذا كنت ترغب في الوصول إلى وظائف FYPP مباشرة من داخل برامج Python الخاصة بك.
يمكن تثبيت آخر إصدار مستقر من FYPP بسهولة كحزمة كوندا من خلال الإصدار
كوندا تثبيت -c conda -forge fypp
يمكنك أيضًا استخدام PYTHONS LINDINERER pip
من أجل تنزيل الإصدار المستقر من صفحة FYPP على PYPI وتثبيته على نظامك.
إذا كنت ترغب في تثبيت FYPP في نظام الوحدة النمطية لمترجم Python 3 النشط (عادةً ما تكون الحالة عند استخدام بيئة افتراضية Python) ، مشكلة
PIP3 تثبيت FYPP
بدلاً من ذلك ، يمكنك تثبيت Fypp في مساحة المستخدم (تحت ~/.local) مع
تثبيت PIP3 -المستخدم FYPP
على Windows ، يمكنك استخدام Chams2 Toolchain لتثبيت FYPP في محطة MINGW. لتثبيت استخدام FYPP:
Pacman -S Mingw-W64-X86_64-Python-Fypp
تأكد من أن البنية المحددة تتوافق مع محطة MingW الحالية. لجميع البنية الداعمة MingW ، تفضل بزيارة فهرس الحزمة هنا.
للتثبيت اليدوي ، يمكنك تنزيل الكود المصدري للإصدارات المستقرة من موقع Fypp Project.
إذا كنت ترغب في الحصول على أحدث إصدار من التطوير ، استنساخ مستودع المشاريع:
git clone https://github.com/aradi/fypp.git
وتحقق من الفرع الرئيسي.
أداة سطر الأوامر عبارة عن برنامج نصي واحد مستقل. يمكنك تشغيله مباشرة من المجلد المصدر
fypp_source_folder/bin/fypp
أو بعد نسخه من مجلد BIN إلى أي موقع مدرج في متغير بيئة المسار ، عن طريق الإصدار فقط
fypp
يمكن العثور على وحدة Python fypp.py
في FYP_SOURCE_FOLDER/src
.
تقرأ أداة سطر أوامر Fypp ملفًا ، وتتعامل مع المعالجة وتكتبه إلى ملف آخر ، لذلك عادةً ما تستدعيه مثل:
fypp source.fpp source.f90
الذي من شأنه أن يعالج Source.FPP ويكتب النتيجة إلى Source.F90. إذا لم يتم تحديد ملفات الإدخال والإخراج ، فسيتم قراءة المعلومات من stdin وكتابتها إلى stdout.
يمكن أن يتأثر سلوك FYPP بخيارات سطر الأوامر المختلفة. يمكن الحصول على ملخص لجميع خيارات سطر الأوامر بواسطة:
fypp -h