%20para%20ratfor90%3F.png)
Provavelmente tenho uma pergunta boba e talvez esteja no fórum errado, mas não sei para onde ir. OK, eu trabalho com gfortran via ratfor90 (é um pequeno pré-processador legal para gfortran e fortran90, que é muito simples, parece C e foi desenvolvido para vidas baixas como eu...) Você escreve um ratfor90 muito curto , então ele é traduzido para o código gfortran completo, e os cálculos partem daí ... Minha pergunta: existe um tradutor "inverso" que pega um código gfortran completo e o traduz para um arquivo ratfor90 muito mais curto e de fácil leitura ?
(Por precaução - meu computador é Dell Precision M, ubuntu 14.04, ambiente KDE ...)
Responder1
Alguémpoderfiz isso como um projeto de pesquisa, mas
- isso é algo como um descompilador (não há muitos deles para discutir), e
- ratfor não tem muitos desenvolvedores para começar.
Dito isto, tudo o que vejo na zona é antigo (o que é expectável tendo em conta os dois pontos mencionados):
- Técnicas de compilação reversa, Cristina Cifuentes, 1994, menciona um programa descrito em BS Baker. Um algoritmo para estruturar fluxogramas. Jornal do ACM, 24(1):98–120, janeiro de 1977.
Baker [Bak77] apresentou um algoritmo para estruturar fluxogramas em fluxogramas equivalentes que faziam uso das seguintes estruturas de controle: if..then..else, multilevel break, multilevel next e loops infinitos. Gotos foram utilizados sempre que o gráfico não pôde ser estruturado utilizando as estruturas anteriores. O algoritmo também foi estendido para gráficos irredutíveis. Foi demonstrado que o algoritmo gerava programas bem formados e aninhados adequadamente, e que quaisquer instruções goto no gráfico final avançavam. Este algoritmo foi implementado no
struct
programa em um PDP11/54 rodando em Unix. Foi usado para reescrever programas Fortran em Ratfor, uma linguagem Fortran estendida que fazia uso de estruturas de controle. O programa struct foi usado mais tarde por J.Reuter nodecomp
descompilador para estruturar gráficos construídos a partir de arquivos de objetos com informações de símbolos. - Ajuda sobre desmontadores/descompiladores, tópico da Usenet em 1990, comentário de Mark William Hopkins diz
Existe um utilitário UNIX padrão (pelo menos para o bsd 4.3 que estamos executando) que faz algo assim:
"struct"
. Este utilitário pega programas Fortran-77 padrão e gera a partir dele o código Ratfor. Ratfor é um Fortran 'racionalizado' que inclui todo o controle estruturado derivado de Algol.
Como você pode perceber, ambos comentam o mesmo programa da década de 1970. O comentário sobre o 4.3BSD mostra que você pode encontrar sua fonte online. O que encontrei conclui a página do 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 (exceto outro projeto de pesquisa) provavelmente não faria o que você precisa.