Proporciona lexing/análisis y análisis estáticos tempranos del código FORTRAN. Se cubren los siguientes estándares de Fortran:
El análisis es configurable, y puede seleccionar el estándar de Fortran para apuntar, incluidos modos extendidos especiales para Fortran 77 no estándar.
Incluye flujo de datos y análisis de bloque básico, un renamer y análisis de tipo.
Este paquete exporta principalmente una biblioteca de Haskell, pero también construye un ejecutable que se puede utilizar para probar y depurar. Por ejemplo, el uso, consulte el proyecto Camfort, que utiliza Fortran-SRC como su parte delantera.
Proporcionamos binarios previos a la construcción de Windows, Mac y Linux.
Agregue fortran-src como dependencia en su proyecto Haskell. Estamos en hackaje y también en apilamiento.
También puede invocar fortran-src en la línea de comando.
Para las características que emiten gráficos, el uso previsto es encenderlo en el comando dot -Tpdf y redirigirlo en un archivo PDF. El comando dot es parte del proyecto GraphViz, consulte su manual para las muchas otras opciones que se pueden explorar para fines de visualización.
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 no pasa un indicador --fortranVersion , la versión se adivinará desde el nombre del archivo:
*.f se analizan con sintaxis extendida de Fortran 77.*.f90 se analizan con sintaxis Fortran 90 (y respectivamente para *.f2003 / *.f03 , *.f2008 / *.f08 ).*.f archivos. Necesitará los archivos de encabezado GMP Library Plus: en muchas plataformas, esto será a través del paquete libgmp-dev .
Las dependencias de la biblioteca de Haskell se enumeran en package.yaml . Fortran-SRC admite la construcción con pila o camarilla.
Fortan-SRC admite GHC 9.0 a GHC 9.4 . Regularmente probamos al menos los GHC mínimos y máximos compatibles. Lanzamientos anteriores/más nuevos de lo que pueden tener problemas. Damos la bienvenida a las correcciones que nos permitirían admitir una gama más amplia de compiladores.
Es probable que necesite al menos 3 gibs de memoria para construir Fortran-SRC.
Para instalar GHC y herramientas de construcción, recomendamos encarecidamente GHCUP.
Cuando se usa la última recomendación , significa la última versión de la herramienta que GhCup etiqueta con recommended . Esto a veces se queda atrás de la latest versión marcada. Con GHCUP instalado, ejecute ghcup list para una mejor comprensión.
Las siguientes son guías generales para cualquier sistema operativo que proporcione las herramientas relevantes. Si tiene problemas, considere verificar los archivos de flujo de trabajo CI en .github/workflows .
Apoyamos la última versión recomendada de Stack (a partir de 2021-09-17, Stack 2.7). En general, cualquier pila 2.x debería funcionar. (Stack 1.x puede funcionar con alternancias menores: es posible que deba descargar el resolución manualmente).
stack build
Para un caparazón interactivo:
stack build
stack ghci
Tenga en cuenta que ejecutar stack ghci antes de ejecutar stack build no funcionará correctamente, debido a que stack ghci no ejecuta herramientas de compilación como Alex y Happy. Por lo tanto, no se construirán módulos analizadores, y recibirá un error después de construir los otros módulos. Puede hacer trampa un poco y ejecutar stack build hasta que vea Building library for [...] (= El preprocesamiento ha terminado), luego presione <Ctrl-C> para detener la compilación y ejecutar stack ghci como de costumbre.
Apoyamos la última versión recomendada de Cabal (a partir de 2021-09-17, Cabal 3.4)
cabal build
Las pruebas unitarias se almacenan en test . Ejecute con stack test o cabal test .
Fortan-SRC está disponible en el hackage y el apilamiento, por lo que para los proyectos de Cabal o Stack solo debe agregar fortran-src a las dependencias de su proyecto.
Si necesita una versión específica de Fortran-Src en una configuración de pila, puede meter una referencia de hackaje en stack.yaml usando extra-deps , como:
resolver : ...
...
extra-deps :
- ...
- fortran-src-$VERSIONSi tiene Cabal correctamente configurado, debería poder instalar Fortran-Src desde Hackage:
cabal install fortran-src
Proporcionamos binarios preconstruidos para algunas plataformas: consulte la pestaña Lanzamientos.
De lo contrario, puede construir desde la fuente y usar comandos de conveniencia como cabal run , stack run . Ver #building para más detalles.
Agradecemos informes de errores, correcciones y propuestas de características. Agregue un problema o cree una solicitud de extracción en el repositorio de GitHub.
Es posible que pueda encontrar mantenedores en la red IRC Libera.Chat. Verifique #Fortran-Src y #Camfort. De lo contrario, podría ponerse en contacto con uno de los equipos en la página del equipo de Camfort, o crear un problema que describa su problema y echaremos un vistazo.
Consulte doc/maintainers.md en Camfort/Camfort.