¿Traducción inversa de fortran90 (o gfortran) a ratfor90?

¿Traducción inversa de fortran90 (o gfortran) a ratfor90?

Lo más probable es que tenga una pregunta tonta y quizás esté preguntando en el foro equivocado, pero no sé a dónde ir. Bien, trabajo con gfortran a través de ratfor90 (es un pequeño preprocesador agradable para gfortran y fortran90, que es muy simple, parece C y ha sido desarrollado para personas de bajos recursos como yo...) Escribes un ratfor90 muy corto , luego se traduce al código gfortran completo, y los cálculos continúan desde allí... Mi pregunta: ¿existe un traductor "inverso" que toma un código gfortran completo y lo traduce a un archivo ratfor90 mucho más corto y fácil de leer? ?

(Por si acaso, mi computadora es Dell Precision M, ubuntu 14.04, entorno KDE...)

Respuesta1

AlguienpodríaHe hecho esto como un proyecto de investigación, pero

  • eso es algo así como un descompilador (no hay muchos de esos para discutir), y
  • Para empezar, ratfor no tiene muchos desarrolladores.

Dicho esto, todo lo que veo en la zona es antiguo (lo cual es de esperar dados los dos puntos mencionados):

  • Técnicas de compilación inversa, Cristina Cifuentes, 1994, menciona un programa descrito en BS Baker. Un algoritmo para estructurar diagramas de flujo.. Revista de la ACM, 24(1):98–120, enero de 1977.

    Baker[Bak77] presentó un algoritmo para estructurar diagramas de flujo en diagramas de flujo equivalentes que hacían uso de las siguientes estructuras de control: si... entonces... si no, interrupción multinivel, siguiente multinivel y bucles sin fin. Se utilizaron gotos siempre que el gráfico no se podía estructurar utilizando las estructuras anteriores. El algoritmo también se extendió a gráficos irreducibles. Se demostró que el algoritmo generaba programas bien formados y anidados adecuadamente, y que cualquier declaración goto en el gráfico final avanzaba. Este algoritmo fue implementado en el struct programa en un PDP11/54 que se ejecuta en Unix. Se utilizó para reescribir programas de Fortran en Ratfor, un lenguaje Fortran extendido que utilizaba estructuras de control. El programa struct fue utilizado posteriormente por J.Reuter en el decomp descompilador para estructurar gráficos creados a partir de archivos de objetos con información de símbolos.

  • Ayuda sobre desensambladores/descompiladores, hilo de Usenet en 1990, comentario de Mark William Hopkin dice

    Hay una utilidad UNIX estándar (al menos para el bsd 4.3 que estamos ejecutando) que hace algo como esto:"struct". Esta utilidad toma programas estándar Fortran-77 y genera a partir de ellos código Ratfor. Ratfor es un Fortran 'racionalizado' que incluye toda la estructura de control derivada de Algol.

Como puedes ver, ambos comentan el mismo programa de los años 1970. El comentario sobre 4.3BSD muestra que puedes encontrar su fuente en línea. Lo que encontré concluye la página del manual con esto:

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 .

Es decir, el programa no estaba completo y (aparte de otro proyecto de investigación) probablemente no haría lo que necesita.

información relacionada