يوفر ليكسينغ/التحليل والتحليلات الثابتة المبكرة لرمز فورتران. تتم تغطية معايير فورتران التالية:
التحليل قابل للتكوين ، ويمكنك تحديد معيار Fortran للاستهداف ، بما في ذلك أوضاع ممتدة خاصة لـ Fortran 77.
يتضمن تدفق البيانات وتحليل الكتلة الأساسية ، و Renamer ، وتحليل النوع.
تقوم هذه الحزمة في المقام الأول بتصدير مكتبة Haskell ، ولكنها تقوم أيضًا ببناء قابلة للتنفيذ يمكن استخدامها للاختبار وتصحيح الأخطاء. على سبيل المثال الاستخدام ، راجع مشروع Madfort ، الذي يستخدم Fortran-SRC كواجهة أمامية.
نحن نقدم الثنائيات المسبقة لنظام التشغيل Windows و Mac و Linux.
أضف fortran-src كاعتماد في مشروع Haskell الخاص بك. نحن على هاكاج وأيضا على المكدس.
يمكنك أيضًا استدعاء fortran-src على سطر الأوامر.
بالنسبة للميزات التي يتم إخراج الرسوم البيانية ، فإن الاستخدام المقصود هو تنشيطه في Command dot -Tpdf وإعادة توجيه ذلك إلى ملف PDF. يعد أمر dot جزءًا من مشروع GraphViz ، يرجى الاطلاع على دليله للعديد من الخيارات الأخرى التي يمكن استكشافها لأغراض التصور.
Usage: fortran-src [OPTION...] <file>
--version show fortran-src version
-v VERSION, -F VERSION --fortranVersion=VERSION Fortran version to use, format: Fortran[66/77/77Legacy/77Extended/90]
-a ACTION --action=ACTION choose the action, possible values: lex|parse
-t --typecheck parse and run typechecker
-R --rename parse and rename variables
-B --bblocks analyse basic blocks
-S --supergraph analyse super graph of basic blocks
-r --reprint Parse and output using pretty printer
--split-long when using pretty printer, split long lines via continuations
--dot output graphs in GraphViz DOT format
--dump-mod-file dump the information contained within mod files
-C[CPP-OPTS] --cpp[=CPP-OPTS] run the C Pre Processor on the Fortran files first
-I DIR --include-dir=DIR directory to search for precompiled 'mod files'
-c --summarise, --compile-mod build an .fsmod file from the input
-o FILE --output-file=FILE name of output file (e.g. name of generated fsmod file)
--make-mods, --make determine dependency order of modules and automatically build .fsmod files
--show-make-graph dump a graph showing the build structure of modules
--show-make-list dump a list of files in build dependency order (topological sort from the dependency graph)
--show-block-numbers[=LINE-NUM] Show the corresponding AST-block identifier number next to every line of code.
--show-flows-to=AST-BLOCK-ID dump a graph showing flows-to information from the given AST-block ID; prefix with 's' for supergraph
--show-flows-from=AST-BLOCK-ID dump a graph showing flows-from information from the given AST-block ID; prefix with 's' for supergraph
إذا لم تقم بتمرير علامة --fortranVersion ، فسيتم تخمين الإصدار من اسم الملف:
*.f مع بناء جملة Fortran 77 الممتد.*.f90 مع بناء جملة Fortran 90 (وعلى التوالي لـ *.f2003 / *.f03 ، *.f2008 / *.f08 ).*.f . ستحتاج إلى ملفات رأس GMP Plus Plus: على العديد من المنصات ، سيكون هذا عبر حزمة libgmp-dev .
يتم سرد تبعيات مكتبة Haskell في package.yaml . يدعم Fortran-SRC المبنى باستخدام Stack أو Cabal.
Fortran-SRC يدعم GHC 9.0 من خلال GHC 9.4 . نختبر بانتظام على الأقل الحد الأدنى والحد الأقصى المدعوم من GHCs. الإصدارات قبل/الأحدث من تلك قد يكون لها مشاكل. نرحب بالإصلاحات التي من شأنها أن ندعم مجموعة واسعة من المترجمين.
من المحتمل أن تحتاج إلى 3 أعمدة من الذاكرة على الأقل لبناء Fortran-SRC.
لتثبيت GHC و Build Tools ، نوصي بشدة ghcup.
عند استخدام الأحدث الموصى به ، فهذا يعني أن أحدث إصدار من الأداة التي يعلقها GHCUP مع recommended . هذا يتخلف أحيانًا عن latest إصدار. مع تثبيت GHCUP ، قم بتشغيل ghcup list لفهم أفضل.
فيما يلي أدلة عامة لأي نظام تشغيل يوفر الأدوات ذات الصلة. إذا كنت تواجه مشكلة ، فكر في التحقق من ملفات سير عمل CI في .github/workflows .
نحن ندعم أحدث إصدار موصى به من Stack (اعتبارًا من 2021-09-17 ، Stack 2.7). بشكل عام ، يجب أن يعمل أي مكدس 2.x. (قد يعمل المكدس 1.x مع بدائل بسيطة - قد تضطر إلى تنزيل المحرار يدويًا.)
stack build
لقذيفة تفاعلية:
stack build
stack ghci
لاحظ أن تشغيل stack ghci قبل تشغيل stack build لن يعمل بشكل صحيح ، نظرًا لعدم تشغيل stack ghci أدوات بناء مثل Alex و Happy. لذلك لن يتم بناء وحدات المحلل ، وستتلقى خطأ بعد إنشاء الوحدات الأخرى. يمكنك الغش قليلاً وتشغيل stack build حتى ترى Building library for [...] (= انتهت المعالجة المسبقة) ، ثم اضغط على <Ctrl-C> لإيقاف البناء وتشغيل stack ghci كالمعتاد.
نحن ندعم أحدث إصدار موصى به من Cabal (اعتبارًا من 2021-09-17 ، Cabal 3.4)
cabal build
يتم تخزين اختبارات الوحدة في test . تشغيل مع stack test أو cabal test .
يتوفر Fortran-SRC على Hackage و Stackage ، لذلك بالنسبة لمشاريع Cabal أو Stack ، يجب عليك فقط إضافة fortran-src إلى تبعيات المشروع.
إذا كنت بحاجة إلى إصدار محدد من Fortran-SRC في إعداد المكدس ، فيمكنك وضع مرجع Hackage في stack.yaml باستخدام extra-deps ، مثل:
resolver : ...
...
extra-deps :
- ...
- fortran-src-$VERSIONإذا قمت بتكوين Cabal بشكل صحيح ، فيجب أن تتمكن من تثبيت Fortran-SRC من Hackage:
cabal install fortran-src
نحن نقدم الثنائيات المسبقة لبعض المنصات: انظر علامة التبويب الإصدارات.
خلاف ذلك ، يمكنك البناء من المصدر واستخدام أوامر الراحة مثل cabal run و stack run . انظر #building للحصول على التفاصيل.
نرحب بتقارير الأخطاء والإصلاحات والمقترحات. أضف مشكلة أو إنشاء طلب سحب على مستودع GitHub.
قد تكون قادرًا على العثور على المشرفين على شبكة Libera.Chat IRC. تحقق في #Fortran-SRC و #Camfort. خلاف ذلك ، يمكنك التواصل مع أحد الفريق على صفحة فريق Madfort - أو إنشاء مشكلة تصف مشكلتك وسنلقي نظرة.
انظر doc/maintainers.md في CAMFORT/CAMFORT.