%20%E3%81%8B%E3%82%89%20ratfor90%20%E3%81%B8%E3%81%AE%E9%80%86%E5%A4%89%E6%8F%9B%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
おそらく馬鹿げた質問で、間違ったフォーラムに質問しているのかもしれませんが、どこに行けばよいかわかりません。わかりました。私は ratfor90 を介して gfortran を操作しています (これは gfortran と fortran90 用の優れた小さなプリプロセッサで、非常にシンプルで、C に似ており、私のような下衆のために開発されました...)。非常に短い ratfor90 を記述すると、それが本格的な gfortran コードに変換され、そこから計算が行われます... 私の質問: 本格的な gfortran コードを、はるかに短くて読みやすい ratfor90 ファイルに変換する「逆」トランスレータはありますか?
(念のため、私のコンピュータは Dell Precision M、ubuntu 14.04、KDE 環境です...)
答え1
誰かかもしれないこれを研究プロジェクトとして行いました。しかし
- それはデコンパイラのようなもの(議論するほど多くはない)であり、
- そもそも ratfor には開発者があまりいません。
そうは言っても、この地域で私が目にするものはすべて古いものです (前述の 2 つの点を考えると予想通りです)。
- 逆コンパイル技術クリスティーナ・シフエンテス(1994 年)は、BS ベイカーで説明されているプログラムについて言及しています。 フローグラフを構造化するアルゴリズム. ACMジャーナル、24(1):98–120、1977年1月。
Baker[Bak77]は、フローグラフを、if..then..else、マルチレベルbreak、マルチレベルnext、無限ループなどの制御構造を利用して、同等のフローグラフに構造化するアルゴリズムを提示した。以前の構造を使用してグラフを構造化できない場合は、gotoが使用された。このアルゴリズムは、既約グラフにも拡張された。このアルゴリズムは、整形式で適切にネストされたプログラムを生成し、最終グラフのgotoステートメントは前方にジャンプすることが実証された。このアルゴリズムは、
struct
Unix 上で動作する PDP11/54 上のプログラム。これは、Fortran プログラムを制御構造を使用する拡張 Fortran 言語である Ratfor に書き直すために使用されました。struct プログラムは後に J.Reuter によってdecomp
シンボル情報を含むオブジェクト ファイルから構築されたグラフを構造化するデコンパイラ。 - 逆アセンブラ/逆コンパイラに関するヘルプ1990年のユーズネットスレッド、マーク・ウィリアム・ホプキンのコメントによると
次のようなことを実行する標準的な UNIX ユーティリティ (少なくとも、私たちが実行している 4.3 bsd 用) があります。
"struct"
このユーティリティは、標準の Fortran-77 プログラムを受け取り、そこから Ratfor コードを生成します。Ratfor は、Algol 由来の制御構造をすべて含む「合理化された」Fortran です。
ご覧のとおり、どちらも 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 .
つまり、プログラムは完全ではなく、(別の研究プロジェクトを除いて)必要なことが行われない可能性があります。