5

これらの一貫性を維持するために、複数の言語 (Java、C#、JavaScript) に対していくつかのモデル クラスを生成する方法を探しています。モデルを 1 か所で定義し、3 つの言語すべての変更ごとにモデルを生成するのに役立つツールはありますか? 私はJetBrains MPSを見ていましたが、1 つの言語のみを生成するのに役立つようです。ドキュメントにも、1 つの言語ジェネレーター (存在する場合) のみが推奨されることが書かれています。

これまでのところ、XML ファイルと各言語の XSL 変換しか方法が見つかりませんでしたが、より便利な方法を探しています。

4

2 に答える 2

3

「モデル」とは、データのみを保持するクラスを意味し、シリアル化/逆シリアル化の一貫性が必要な場合は、Googleプロトコルバッファ(https://developers.google.com/protocol-buffers/)または同様のソリューションを検討する必要があります。

より洗練された使用法については、cで記述し、swigでラッパーを生成することを検討してください:http ://www.swig.org/ 、しかし極端です;)

于 2011-06-07T10:39:53.290 に答える
1

これらの言語の一部の特性は相互に翻訳されないため、厳密にはこれは不可能です。

たとえば、delegate Method();何かをモデル化するときのように C# を組み込むと、Java にはデリゲート メソッドの概念がないため、Java への直接変換がすぐに中断されます。

確かに、どちらの言語もチューリング完全であるため、理論的翻訳されますが、翻訳者は次のことを行う必要があります。

  1. 入力言語を十分に低レベルの言語にコンパイルして、入力言語と出力言語の両方が何らかの形でその言語をオリジンとして共有するようにします (アセンブラーの可能性があります)。
  2. その低レベル言語を逆コンパイルして、出力言語の多くの同等の形式の 1 つに戻します。

上記のステップ 2 は非常に複雑すぎて実行できません。(これが、C# をコンパイル済みの EXE として配布できる理由であり、誰かがソース コードを盗む心配はありません。)

于 2011-06-07T10:01:35.393 に答える