fortran90(またはgfortran)からratfor90に逆翻訳しますか?

fortran90(またはgfortran)からratfor90に逆翻訳しますか?

愚かな質問がある可能性が高く、おそらく間違ったフォーラムに質問していますが、どこに行くべきかわかりません。わかりました、私はratfor90を通してgfortranを使用しています。 (gfortranとfortran90のための素晴らしい小さな前処理装置です。非常にシンプルでCのように見え、私のように生命力の低い人のために開発されました.....)非常に短いratfor90を作成します。それから私は完全なgfortranコードに変換され、そこから計算が始まります...私の質問:gfortranコード全体をインポートして変換できる「逆」トランスレータはありますか?短くて読みやすいratfor90ファイルに翻訳されました。 ?

(もし私のコンピュータはDell Precision M、ubuntu 14.04、KDE環境です...)

答え1

可能研究プロジェクトに進んだが、

  • これはデコンパイラと同じです(議論する内容はあまりありません)。
  • Ratforには最初から開発者がいませんでした。

しかし、この地域で私が見たことはすべて古くなっています(言及された2つのことを考慮すると、これは予想されます)。

  • 逆コンパイル技術, 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プログラムを再構築するために使用されます。構造プログラムは後にJ.Reuterによって導入されました。 decomp デコンパイラは、シンボル情報を含むオブジェクトファイルから構造グラフを作成します。

  • 逆アセンブラ/デコンパイラヘルプ、Mark William Hopkinがコメントした1990年のUsenetスレッド

    次のタスクを実行する標準のUNIXユーティリティ(少なくとも私たちが実行している4.3 bsdの場合)があります。"struct"。このユーティリティは、標準のFortran-77プログラムを使用してRatforコードを生成します。 Ratforは、Algolから派生したすべての制御構造を含む「合理化された」Fortranです。

ご覧のとおり、2人は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 .

つまり、プログラムが完全ではなく、お客様の要件を満たしていない可能性があります(他の研究プロジェクトを除く)。

関連情報