Обеспечивает лексинг/анализ и ранний статический анализ кода FORTRAN. Следующие стандарты FORTRAN покрыты:
Распокация настраивается, и вы можете выбрать стандарт FORTRAN для цели, включая специальные расширенные режимы для нестандартного FORTRAN 77.
Включает в себя поток данных и базовый анализ блоков, реномер и анализ типов.
Этот пакет в первую очередь экспортирует библиотеку Haskell, но также создает исполняемый файл, который можно использовать для тестирования и отладки. Например, использование, см. Проект Camfort, который использует Fortran-Src в качестве своего переднего конца.
Мы предоставляем предвзятые двоичные файлы для Windows, Mac и Linux.
Добавьте fortran-src в качестве зависимости в вашем проекте Haskell. Мы находимся на хаке, а также в стекабе.
Вы также можете вызвать fortran-src в командной строке.
Для функций, которые выводятся выходные графики, предполагаемое использование состоит в том, чтобы подключить его в команду 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 поддерживает здание со стеком или кабиной.
Fortran-SRC поддерживает GHC 9.0 через GHC 9.4 . Мы регулярно проверяем, по крайней мере, минимальный и максимальный поддерживаемый GHC. Выпуски до/новее, чем эти, могут иметь проблемы. Мы приветствуем исправления, которые позволили бы нам поддерживать более широкий спектр компиляторов.
Скорее всего, вам понадобится не менее 3 Gibs of Pemory, чтобы построить Fortran-Src.
Для установки GHC и инструментов построения мы настоятельно рекомендуем GHCUP.
При использовании последних рекомендаций это означает последнюю версию инструмента, который ghcup теги с recommended . Это иногда отстает от latest версии. С установленным GHCUP запустите ghcup list для лучшего понимания.
Ниже приведены общие руководства для любой ОС, которая предоставляет соответствующие инструменты. Если у вас есть проблемы, рассмотрите возможность проверки файлов рабочего процесса CI в .github/workflows .
Мы поддерживаем последнюю рекомендованную версию стека (по состоянию на 2021-09-17, стек 2.7). Как правило, любой стек 2.x должен работать. (Stack 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 и Scackage, поэтому для проектов Cabal или Stack вам нужно только добавить fortran-src к зависимостям вашего проекта.
Если вам нужна конкретная версия Fortran-Src в настройке стека, вы можете внести ссылку extra-deps взломать в stack.yaml
resolver : ...
...
extra-deps :
- ...
- fortran-src-$VERSIONЕсли у вас правильно настроена Cabal, вы сможете установить Fortran-Src из Hackage:
cabal install fortran-src
Мы предоставляем предварительно построенные двоичные файлы для некоторых платформ: см. Вкладку релизов.
В противном случае вы можете построить из источника и использовать удобные команды, такие как cabal run , stack run . Смотрите #Building для деталей.
Мы приветствуем отчеты об ошибках, исправления и предложения. Добавьте проблему или создайте запрос на притяжение в репозитории GitHub.
Возможно, вы сможете найти сопровождающих в сети IRC Libera.chat. Проверьте #fortran-src и #camfort. В противном случае вы можете связаться с одной из команды на странице команды Camfort - или создать проблему, описывающую вашу проблему, и мы посмотрим.
См doc/maintainers.md в Camfort/Camfort.