Alguém pode ter feito isso como um projeto de pesquisa, mas
- é algo como um descompilador (não muitos para discutir) e
- O ratfor não tem muitos desenvolvedores para começar.
Dito isto, tudo o que vejo na área é antigo (o que é esperado, considerando os dois pontos mencionados):
-
Técnicas de Compilação Inversa , Cristina Cifuentes, 1994, menciona um programa descrito em B.S. Padeiro. Um algoritmo para estruturar fluxogramas .
Jornal do ACM,
24 (1): 98-120, janeiro de 1977.
Baker[Bak77] presented an algorithm to structure flowgraph s into equivalent flowgraphs that made use of the following control structures: if..then..else, multilevel break, multilevel next, and endless loops. Gotos were used whenever the graph could not be structured using the previous structures. The algorithm was extended to irreducible graphs as well. It was demonstrated that the algorithm generated well-formed and properly nested programs, and that any goto statements in the final graph jumped forward. This algorithm was implemented in the
struct
program on a PDP11/54 running under Unix. It was used to rewrite Fortran programs into Ratfor, an extended Fortran language that made use of control structures. The struct program was later used by J.Reuter in thedecomp
decompiler to structure graphs built from object files with symbol information. -
Ajuda no desmontador / descompilador , thread da usenet em 1990, comentário de Mark William Hopkin diz
There is a standard UNIX utility (at least for the 4.3 bsd we're running) that does something just like this:
"struct"
. This utility takes standard Fortran-77 programs and generated from it Ratfor code. Ratfor is a 'rationalized' Fortran that includes all the Algol-derived control structured.
Como você pode ver, ambos comentam o mesmo programa dos anos 70. O comentário sobre o 4.3BSD mostra que você pode encontrar sua fonte online. O que eu encontrei conclui a página de manual com isto:
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 .
Ou seja, o programa não estava completo e (além de outro projeto de pesquisa) provavelmente não faria o que você precisa.