Fournit des analyses de lexing / analyse et statiques précoces du code FORTRAN. Les normes FORTRAN suivantes sont couvertes:
L'analyse est configurable et vous pouvez sélectionner la norme FORTRAN à cible, y compris des modes étendus spéciaux pour FORTRAN 77 non standard.
Comprend le flux de données et l'analyse des blocs de base, un renommer et une analyse de type.
Ce package exporte principalement une bibliothèque Haskell, mais construit également un exécutable qui peut être utilisé pour les tests et le débogage. Par exemple, consultez le projet Camfort, qui utilise Fortran-Src comme frontal.
Nous fournissons des binaires prédéfinis pour Windows, Mac et Linux.
Ajoutez fortran-src comme dépendance dans votre projet Haskell. Nous sommes sur Hackage et sur Stackage.
Vous pouvez également invoquer fortran-src sur la ligne de commande.
Pour les fonctionnalités qui sortent les graphiques, l'utilisation prévue est de la tuer dans la commande dot -Tpdf et de rediriger cela en fichier pdf. La commande dot fait partie du projet Graphviz, veuillez consulter leur manuel pour les nombreuses autres options qui peuvent être explorées à des fins de visualisation.
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
Si vous ne passez pas un indicateur --fortranVersion , la version sera devinée à partir du nom du fichier:
*.f sont analysés avec une syntaxe Fortran 77 étendue.*.f90 sont analysés avec la syntaxe FORTRAN 90 (et respectivement pour *.f2003 / *.f03 , *.f2008 / *.f08 ).*.f . Vous aurez besoin des fichiers d'en-tête de bibliothèque GMP plus: sur de nombreuses plates-formes, ce sera via le package libgmp-dev .
Les dépendances de la bibliothèque Haskell sont répertoriées dans package.yaml . FORTRAN-SRC prend en charge le bâtiment avec pile ou cabale.
FORTRAN-SRC prend en charge GHC 9.0 à GHC 9.4 . Nous testons régulièrement au moins les GHC minimums et maximaux pris en charge. Les versions avant / plus récentes que celles-ci peuvent avoir des problèmes. Nous accueillons des correctifs qui nous permettraient de prendre en charge une gamme plus large de compilateurs.
Vous aurez probablement besoin d'au moins 3 gibs de mémoire pour construire FORTRAN-SRC.
Pour installer des outils de GHC et de construction, nous recommandons fortement GHCUP.
Lorsque les derniers recommandés sont utilisés, cela signifie la dernière version de l'outil avec lequel GHCUP marque recommended . Cela est parfois en retard sur la latest version marquée. Avec GHCUP installé, exécutez ghcup list pour une meilleure compréhension.
Voici des guides généraux pour tout système d'exploitation qui fournit les outils pertinents. Si vous avez des problèmes, envisagez de vérifier les fichiers de workflow CI dans .github/workflows .
Nous prenons en charge la dernière version recommandée de Stack (à partir de 2021-09-17, pile 2.7). Généralement, toute pile 2.x devrait fonctionner. (Stack 1.x peut fonctionner avec des alternances mineures - vous devrez peut-être télécharger le résolveur manuellement.)
stack build
Pour une coque interactive:
stack build
stack ghci
Notez que l'exécution stack ghci avant d'exécuter stack build ne fonctionnera pas correctement, en raison de stack ghci pas d'exécution d'outils de construction comme Alex et Happy. Les modules d'analyse ne seront donc pas construits et vous recevrez une erreur après la création des autres modules. Vous pouvez tricher un peu et exécuter stack build jusqu'à ce que vous voyiez Building library for [...] (= le prétraitement a terminé), puis frappez <Ctrl-C> pour arrêter la construction et exécuter stack ghci comme d'habitude.
Nous soutenons la dernière version recommandée de Cabal (à partir de 2021-09-17, Cabal 3.4)
cabal build
Les tests unitaires sont stockés dans test . Exécutez avec stack test ou cabal test .
FORTRAN-SRC est disponible sur Hackage et Stackage, donc pour les projets Cabal ou Stack, vous ne devez qu'ajouter fortran-src à vos dépendances de projet.
Si vous avez besoin d'une version spécifique de FORTRAN-SRC dans une configuration de pile, vous pouvez fourrer une référence de piratage dans stack.yaml en utilisant extra-deps , comme:
resolver : ...
...
extra-deps :
- ...
- fortran-src-$VERSIONSi vous avez une cabale correctement configurée, vous devriez pouvoir installer FORTRAN-SRC à partir de Hackage:
cabal install fortran-src
Nous fournissons des binaires prédéfinis pour certaines plates-formes: voir l'onglet des versions.
Sinon, vous pouvez construire à partir de la source et utiliser des commandes de commodité comme cabal run , stack run . Voir #building pour plus de détails.
Nous accueillons des rapports de bogues, des correctifs et des propositions de fonctionnalités. Ajoutez un problème ou créez une demande de traction sur le référentiel GitHub.
Vous pourrez peut-être trouver des responsables sur le réseau IRC Libera.Chat. Enregistrez # Fortran-Src et #Camfort. Sinon, vous pourriez entrer en contact avec l'une des équipes sur la page de l'équipe de Camfort - ou créer un problème décrivant votre problème et nous allons jeter un coup d'œil.
Voir doc/maintainers.md en Camfort / Camfort.