%EC%9D%84%20ratfor90%EC%9C%BC%EB%A1%9C%20%EC%97%AD%EB%B2%88%EC%97%AD%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
아마도 어리석은 질문이 있고 아마도 잘못된 포럼에 질문을 하고 있을 것입니다. 그러나 어디로 가야 할지 모르겠습니다. 좋아, 나는 ratfor90을 통해 gfortran을 사용하여 작업합니다(gfortran 및 fortran90을 위한 멋진 작은 전처리기입니다. 이는 매우 간단하고 C와 유사하며 저와 같은 저소득층을 위해 개발되었습니다...). 매우 짧은 ratfor90을 작성합니다. 그런 다음 본격적인 gfortran 코드로 변환되고 거기에서 계산이 진행됩니다... 내 질문: 본격적인 gfortran 코드를 가져와 훨씬 더 짧고 읽기 쉬운 ratfor90 파일로 변환하는 "역"번역기가 있습니까? ?
(만약에 대비해 내 컴퓨터는 Dell Precision M, ubuntu 14.04, KDE 환경입니다...)
답변1
누구~할 것 같다연구 프로젝트로 이 일을 해왔지만
- 그것은 디컴파일러와 같은 것입니다(논의할 내용은 많지 않습니다).
- Ratfor에는 처음부터 개발자가 많지 않습니다.
그렇긴 하지만, 내가 이 지역에서 보는 것은 모두 오래된 것입니다(언급된 두 가지 사항을 고려하면 이는 예상됩니다).
- 역방향 컴파일 기술, Cristina Cifuentes, 1994는 BS Baker에 설명된 프로그램을 언급합니다. 흐름 그래프를 구조화하기 위한 알고리즘. ACM 저널, 24(1):98–120, 1977년 1월.
Baker[Bak77]는 if..then..else, 다중 레벨 중단, 다중 레벨 다음 및 무한 루프와 같은 제어 구조를 사용하여 흐름 그래프를 동등한 흐름 그래프로 구성하는 알고리즘을 제시했습니다. Goto는 이전 구조를 사용하여 그래프를 구성할 수 없을 때마다 사용되었습니다. 알고리즘은 환원 불가능한 그래프에도 확장되었습니다. 알고리즘이 잘 구성되고 적절하게 중첩된 프로그램을 생성했으며 최종 그래프의 모든 goto 문이 앞으로 이동한다는 것이 입증되었습니다. 이 알고리즘은 다음에서 구현되었습니다.
struct
Unix에서 실행되는 PDP11/54의 프로그램. 이는 제어 구조를 사용하는 확장 Fortran 언어인 Ratfor로 Fortran 프로그램을 다시 작성하는 데 사용되었습니다. struct 프로그램은 나중에 J.Reuter에서 사용되었습니다.decomp
기호 정보가 있는 객체 파일로 구성된 구조 그래프를 위한 디컴파일러입니다. - 디스어셈블러/디컴파일러에 대한 도움말, 1990년 유즈넷 스레드, Mark William Hopkin의 댓글에 따르면
다음과 같은 작업을 수행하는 표준 UNIX 유틸리티(적어도 우리가 실행 중인 4.3 bsd의 경우)가 있습니다.
"struct"
. 이 유틸리티는 표준 Fortran-77 프로그램을 사용하여 Ratfor 코드에서 생성됩니다. Ratfor는 Algol에서 파생된 모든 제어 구조를 포함하는 '합리화된' 포트란입니다.
보시다시피 두 사람 모두 1970년대의 동일한 프로그램에 대해 논평했습니다. 4.3BSD에 대한 설명은 해당 소스를 온라인에서 찾을 수 있음을 보여줍니다. 내가 찾은 내용은 매뉴얼 페이지를 다음과 같이 마무리합니다.
BUGS
Struct knows Fortran 66 syntax, but not full Fortran 77.
If an input Fortran program contains identifiers which are reserved
words in Ratfor, the structured version of the program will not be a
valid Ratfor program.
The labels generated cannot go above 32767.
If you get a goto without a target, try −e .
즉, 프로그램이 완전하지 않았으며 (다른 연구 프로젝트를 제외하고) 필요한 작업을 수행하지 못할 가능성이 높습니다.