Fortran 코드의 Lexing/Parsing 및 초기 정적 분석을 제공합니다. 다음의 Fortran 표준은 다음과 같습니다.
구문 분석은 구성 가능하며 비표준 Fortran 77의 특수 확장 모드를 포함하여 Fortran 표준을 목표로 선택할 수 있습니다.
데이터 흐름 및 기본 블록 분석, 르네마머 및 유형 분석이 포함됩니다.
이 패키지는 주로 Haskell 라이브러리를 내보내지 만 테스트 및 디버깅에 사용할 수있는 실행 파일도 구축합니다. 예를 들어, 사용법은 Fortran-SRC를 프론트 엔드로 사용하는 Camfort Project를 참조하십시오.
Windows, Mac 및 Linux 용 미리 빌드 바이너리를 제공합니다.
Haskell 프로젝트에서 fortran-src 종속성으로 추가하십시오. 우리는 해킹 중이며 또한 스택에 있습니다.
명령 줄에서 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 라이브러리 플러스 헤더 파일이 필요합니다. 많은 플랫폼에서는 패키지 libgmp-dev 통해 이루어집니다.
Haskell 라이브러리 종속성은 package.yaml 에 나열되어 있습니다. Fortran-SRC는 스택 또는 카발로 건물을 지원합니다.
Fortran-SRC는 GHC 9.0을 통해 GHC 9.4를 지원합니다. 우리는 정기적으로 최소 최소 및 최대 지원 GHC를 테스트합니다. 문제가있을 수있는 것보다/새로 릴리스되기 전에 출시됩니다. 더 넓은 범위의 컴파일러를 지원할 수있는 수정 사항을 환영합니다.
Fortran-SRC를 구축하려면 3 개 이상의 메모리가 필요할 것입니다.
GHC 및 빌드 도구를 설치하기 위해 GHCUP을 강력히 권장합니다.
최신 권장을 사용하는 경우 GHCUP 태그가 recommended 최신 버전의 도구를 의미합니다. 이것은 때때로 latest 버전의 버전 뒤에 뒤떨어집니다. GHCUP가 설치된 상태에서 ghcup list 실행하여 더 잘 이해하십시오.
다음은 관련 도구를 제공하는 모든 OS의 일반 안내서입니다. 문제가있는 경우 .github/workflows 에서 CI 워크 플로 파일을 확인하십시오.
우리는 최신 권장 버전의 스택 (2021-09-17, 스택 2.7)을 지원합니다. 일반적으로 모든 스택 2.x가 작동해야합니다. (스택 1.x는 약간의 교대로 작동 할 수 있습니다. 리졸버를 수동으로 다운로드해야 할 수도 있습니다.)
stack build
대화식 쉘의 경우 :
stack build
stack ghci
stack build 실행하기 전에 stack ghci 실행하는 것은 Alex 및 Happy와 같은 빌드 도구를 실행하지 않기 때문에 stack ghci 제대로 작동하지 않습니다. 따라서 Parser 모듈이 구축되지 않으며 다른 모듈을 구축 한 후에 오류가 발생합니다. Building library for [...] 볼 때까지 약간의 속임수를 내고 stack build 실행할 수 있습니다. 그런 다음 <Ctrl-C> 를 치고 빌드를 중지하고 평소와 같이 stack ghci 실행하십시오.
우리는 Cabal의 최신 권장 버전 (2021-09-17, Cabal 3.4 기준)을 지원합니다.
cabal build
단위 테스트는 test 에 저장됩니다. stack test 또는 cabal test 로 실행하십시오.
Fortran-SRC는 해킹 및 스택에서 사용할 수 있으므로 Cabal 또는 스택 프로젝트의 경우 프로젝트 종속성에 fortran-src 추가하면됩니다.
스택 설정에 특정 버전의 FORTRAN-SRC가 필요한 경우 다음과 같은 extra-deps 사용하여 stack.yaml 에 Hackage Reference를 넣을 수 있습니다.
resolver : ...
...
extra-deps :
- ...
- fortran-src-$VERSIONCabal이 제대로 구성된 경우 Hackage에서 Fortran-Src를 설치할 수 있어야합니다.
cabal install fortran-src
일부 플랫폼에는 미리 빌드 바이너리를 제공합니다. 릴리스 탭을 참조하십시오.
그렇지 않으면 소스에서 빌드하고 cabal run , stack run 같은 편의 명령을 사용할 수 있습니다. 자세한 내용은 #Building을 참조하십시오.
우리는 버그 보고서, 수정 및 기능 제안을 환영합니다. GitHub 저장소에서 문제를 추가하거나 풀 요청을 작성하십시오.
Libera.chat IRC 네트워크에서 관리자를 찾을 수 있습니다. #fortran-src 및 #camfort를 확인하십시오. 그렇지 않으면 Camfort 팀 페이지에서 팀 중 하나와 연락을 취하거나 문제를 설명하는 문제를 만들 수 있습니다.
Camfort/Camfort의 doc/maintainers.md 참조하십시오.