Bietet Lexing/Parsing und frühe statische Analysen des FORTRAN -Code. Die folgenden FORTRAN -Standards sind abgedeckt:
Das Parsing ist konfigurierbar und Sie können den FORTRAN -Standard für Target auswählen, einschließlich spezieller erweiterter Modi für nicht standardmäßige Fortran 77.
Beinhaltet den Datenfluss und die grundlegende Blockanalyse, einen Umbenamer und Typanalyse.
Dieses Paket exportiert in erster Linie eine Haskell -Bibliothek, erstellt aber auch eine ausführbare Datei, die zum Testen und Debuggen verwendet werden kann. Beispielsweise siehe das Camfort-Projekt, das FORTRAN-SRC als vorderster Ende verwendet.
Wir bieten vorgebaute Binärdateien für Windows, Mac und Linux.
Fügen Sie fortran-src als Abhängigkeit von Ihrem Haskell-Projekt hinzu. Wir sind auf Hackage und auch auf Stackage.
Sie können auch fortran-src in der Befehlszeile aufrufen.
Bei Merkmalen, die Diagramme ausgab, besteht die beabsichtigte Verwendung darin, sie in den dot -Tpdf zu übergeben und diese in eine PDF -Datei umzuleiten. Der dot -Befehl ist Teil des Graphviz -Projekts. Weitere Optionen finden Sie in ihrem Handbuch, die zu Visualisierungszwecken erforscht werden können.
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
Wenn Sie keine Flagge --fortranVersion übergeben, wird die Version aus dem Dateinamen erraten:
*.f enden, werden mit erweiterter FORTRAN 77 -Syntax analysiert.*.f90 enden, sind mit der FORTRAN 90 -Syntax analysiert (bzw. für *.f2003 / *.f03 , *.f2008 / *.f08 ).*.f -Dateien analysiert. Sie benötigen die GMP Library Plus-Header-Dateien: Auf vielen Plattformen erfolgt dies über das Paket libgmp-dev .
Die Abhängigkeiten der Haskell -Bibliothek sind in package.yaml aufgeführt. Forran-Src unterstützt das Gebäude mit Stack oder Kabale.
FORTRAN-SRC unterstützt GHC 9.0 bis GHC 9.4 . Wir testen regelmäßig mindestens die minimal- und maximal unterstützten GHCs. Veröffentlichungen vor/neuer als diese möglicherweise Probleme haben. Wir begrüßen Korrekturen, mit denen wir eine breitere Palette von Compilern unterstützen können.
Sie benötigen wahrscheinlich mindestens 3 Gibs Speicher, um FORTRAN-SRC zu erstellen.
Für die Installation von GHC- und Build -Tools empfehlen wir GHCup dringend.
Wenn die neueste Empfehlung verwendet wird, bedeutet dies die neueste Version des Tools, mit der GHCUP -Tags recommended . Dies bleibt manchmal hinter der latest Version zurück. Führen Sie ghcup list für ein besseres Verständnis aus, wenn Ghcup installiert ist.
Im Folgenden finden Sie allgemeine Leitfäden für jedes Betriebssystem, die die relevanten Tools bereitstellen. Wenn Sie Probleme haben, sollten Sie die CI -Workflow -Dateien in .github/workflows überprüfen.
Wir unterstützen die neueste empfohlene Version von Stack (ab 2021-09-17, Stack 2.7). Im Allgemeinen sollte jeder Stack 2.x funktionieren. (Stack 1.x kann mit kleinen Alternationen funktionieren - Sie müssen den Resolver möglicherweise manuell herunterladen.)
stack build
Für eine interaktive Hülle:
stack build
stack ghci
Beachten Sie, dass das Ausführen stack ghci vor dem Ausführen stack build nicht richtig funktioniert, da stack ghci keine Build -Tools wie Alex und Happy ausführt. Daher werden Parser -Module nicht erstellt, und Sie werden nach dem Erstellen der anderen Module einen Fehler erhalten. Sie können ein bisschen schummeln und stack build ausführen, bis Sie Building library for [...] (= Vorverarbeitung abgeschlossen) sehen, und dann <Ctrl-C> -Anschließe, um den Build- stack ghci wie gewohnt zu stoppen.
Wir unterstützen die neueste empfohlene Version von Cabal (ab 2021-09-17, Cabal 3.4)
cabal build
Unit -Tests werden im test gespeichert. Führen Sie mit stack test oder cabal test durch.
FORTRAN-SRC ist für Hackage und Stackage verfügbar. Für Cabal- oder Stack-Projekte sollten Sie jedoch nur für Ihre Projektabhängigkeiten fortran-src hinzufügen.
Wenn Sie eine bestimmte Version von FORTRAN-SRC in einem Stapel-Setup benötigen, können Sie eine Hackage-Referenz in stack.yaml mit extra-deps einfügen, wie:
resolver : ...
...
extra-deps :
- ...
- fortran-src-$VERSIONWenn Sie Cabal ordnungsgemäß konfiguriert haben, sollten Sie FORTRAN-SRC von Hackage installieren:
cabal install fortran-src
Wir bieten vorgefertigte Binärdateien für einige Plattformen: Siehe Registerkarte Releases.
Andernfalls können Sie aus Quelle aufbauen und Convenience -Befehle wie cabal run und stack run verwenden. Weitere Informationen finden Sie unter #Building.
Wir begrüßen Fehlerberichte, Korrekturen und Feature -Vorschläge. Fügen Sie ein Problem hinzu oder erstellen Sie eine Pull -Anforderung im GitHub -Repository.
Möglicherweise finden Sie in der Lage, die Inhaber eines IRC -Netzwerks in Libera.chat zu finden. Suchen Sie #fortran-src und #Camfort ein. Andernfalls können Sie mit einem der Teams auf der Camfort -Teamseite in Kontakt kommen - oder ein Problem erstellen, das Ihr Problem beschreibt, und wir werden uns ansehen.
Siehe doc/maintainers.md in Camfort/Camfort.