7

通訳者を使ってある言語を別の言語に翻訳することは可能ですか?

quercus は php を java に変換できると聞きましたか? 最初は、コード エラーを引き起こす可能性のある安価でお粗末なソリューションだと思っていましたが、そうすることが完全に可能であるようです。

php を python や ruby​​ などの他の言語に翻訳してもらえますか? c++ から Java などに?

4

4 に答える 4

11

ある言語を別の言語に翻訳することは、コンパイラ、インタープリター、およびトランスレーターと呼ばれるプログラムのクラスの特殊なケースにすぎません。

このクラスのプログラムは、通常は形式的な文法で記述できる入力記号 (「ソース コード」) のストリームを受け取り、記号のストリームを出力します。

そのシンボルの出力ストリームは次のようになります。

  • ネイティブ アセンブリ コード。通常は、マシンが実行されているオペレーティング システムとハードウェア用です。その場合、プログラムはコンパイラーと呼ばれます。
  • 異なる OS やハードウェアのネイティブ アセンブリ コード。これはコンパイラーとも呼ばれますが、クロスコンパイラーと呼ばれることがよくあります。
  • ある種の仮想マシンで実行できる中間形式に。これは真のコンパイラではありませんが、とにかくコンパイラと呼ばれることがよくあります。Java、C#、F#、VB.NET などの「コンパイラ」はすべてこのカテゴリに分類されます。
  • 完全に別の言語に。これはトランスレータと呼ばれ、Java から C# へのトランスレータなどの例があります。通常、イディオムは簡単に翻訳できないため、成功の度合いはさまざまです。
  • インタープリターは同じ原則に従いますが、通常、処理されたフォームをどこかに保存するのではなく、その場で実行します。Perl、PHP、およびシェル スクリプトはすべてこのカテゴリに分類されます。たとえば、PHP はオペコードを中間形式としてオペコード キャッシュに保存しますが (オペコーディング キャッシュが有効な場合)、この中間形式は保存されないため、PHP をインタプリタと呼んでも安全です。
于 2010-01-13T08:02:59.693 に答える
5

問題は、from または to のいずれかでうまく翻訳されないイディオムがある場合に発生します。構文的には有効なコードが得られますが、acid で誰かによって書かれたように見えます。

于 2010-01-13T07:56:56.780 に答える
2

いくつかのポインタについては、SO で「transpiler」を検索してください: https://stackoverflow.com/search?q=transpiler

于 2010-01-13T08:03:25.120 に答える
1

これはあなたが求めているものではないかもしれませんが、SWIG http://en.wikipedia.org/wiki/SWIGがあります

プロジェクトの 1 つで、C++ フレームワーク用の python、java、および ruby​​ バインディング / ラッパーを作成するために使用しました。http://marsyas.sness.netで実際の動作を確認してください。

于 2010-01-13T07:58:36.207 に答える