fortran-src: Parsers and analyses for Fortran standards 66, 77, 90 and 95.

[ apache, language, library, program ] [ Propose Tags ]

Provides lexing, parsing, and basic analyses of Fortran code covering standards: FORTRAN 66, FORTRAN 77, Fortran 90, and Fortran 95 and some legacy extensions. Includes data flow and basic block analysis, a renamer, and type analysis. For example usage, see the camfort project, which uses fortran-src as its front end.


[Skip to Readme]
Versions [RSS] [faq] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.1.0.6, 0.2.0.0, 0.2.1.1, 0.3.0, 0.4.0, 0.4.2, 0.4.3, 0.5.0
Change log CHANGELOG.md
Dependencies array (==0.5.*), base (>=4.6 && <5), binary (>=0.8.3.0 && <0.11), bytestring (>=0.10 && <0.12), containers (>=0.5 && <0.7), deepseq (==1.4.*), directory (>=1.2 && <2), fgl (==5.*), filepath (==1.4.*), fortran-src, GenericPretty (>=1.2.2 && <2), mtl (>=2.2 && <3), pretty (>=1.1 && <2), temporary (>=1.2 && <1.4), text (>=1.2 && <2), uniplate (>=1.6 && <2) [details]
License Apache-2.0
Author Mistral Contrastin, Matthew Danish, Dominic Orchard, Andrew Rice
Maintainer me@madgen.net
Category Language
Home page https://github.com/camfort/fortran-src#readme
Bug tracker https://github.com/camfort/fortran-src/issues
Source repo head: git clone https://github.com/camfort/fortran-src
Uploaded by raehik at 2021-03-03T13:52:16Z
Distributions NixOS:0.5.0
Executables fortran-src
Downloads 6036 total (236 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Candidates


Readme for fortran-src-0.4.2

[back to package description]

fortran-src

CI status badge

Provides lexing, parsing, and basic analyses of Fortran code covering standards: FORTRAN 66, FORTRAN 77, Fortran 90, Fortran 95 and part of Fortran 2003. Includes data flow and basic block analysis, a renamer, and type analysis. For example usage, see the 'camfort' project (https://github.com/camfort/camfort), which uses fortran-src as its front end.

For features that output graphs, the intended usage is to pipe it into the command 'dot -Tpdf' and redirect that into a PDF file. The 'dot' command is part of the GraphViz project (https://www.graphviz.org/), please see their manual for the many other options that can be explored for visualisation purposes.

Usage: fortran-src [OPTION...] <file>
  -v VERSION, -F VERSION  --fortranVersion=VERSION         Fortran version to use, format: Fortran[66/77/77Legacy/77Extended/90]
  -a ACTION               --action=ACTION                  lex or parse action
  -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
                          --dot                            output graphs in GraphViz DOT format
                          --dump-mod-file                  dump the information contained within mod files
  -I DIR                  --include-dir=DIR                directory to search for precompiled 'mod files'
  -c                      --compile                        compile an .fsmod file from the input
                          --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

Installation

Build from source

Stack 2.x is required for building. (Stack 1.x may work with minor alternations -- you may have to download the resolver manually.)

Clone the repository and install Stack.

stack setup
stack build

Using Cabal

Install Cabal.

cabal install fortran-src