最終学年のプロジェクトで XML を学ぶことにしました。私がやりたいのは、いくつかの Java ソース コードを取得し、その Java ソース コードを XML に変換してから、XML を使用して別の言語に変換することです。XML、ebnf、bnf、およびその他のさまざまなテクノロジについて多くのことを読みましたが、理解するのに苦労しています。この分野に精通している人が、このプロジェクトを完了するためにどのソフトウェアを使用する必要があるか、Java から XML への変換を開始するために何を調べるべきかなど、開始するためのヒントを教えてくれるかどうか疑問に思っていました。ありがとう。
3 に答える
papがすでに述べたように、これは非常に複雑なことです。XMLを学ぶだけの場合でも、続行したい場合は、それを実行するために取得/作成する必要のあることがいくつかあります。 ..
最初に取得/作成する必要があるのはJavaパーサーです。これは、Javaコードを演算子、パラメーターなどに「分割」して、xml表現を構築するために使用できます。
達成する2番目のことは、xmlベースの言語(多かれ少なかれBNFに似ていますが、XMLで)を完全に記述するスキーマ(xsd)を作成することです。
変換された「HelloWorld」コードの一部は、たとえば次のようになります(ただし、私はac#の人です)
<invokeMethod fullname="Console.WriteLine, mscorlib">
<param type="System.String">Hello World!</param>
</invokeMethod>
したがって、「invokeMember」のスキーマ定義が必要です。これには、フルネーム属性と0個以上のパラメータ要素が必要です...など。
それをカバーしたら、解析されたJavaコードをスキーマに準拠したXMLに変換する一種の「コードジェネレーター」(私が間違っていない場合はレクサーと呼ばれます)を作成する必要があります。
そして、あなたはまだ途中です...
xmlスタイルシートを使用して、最終的にXMLを別の言語タイプに変換できます(これも達成するのが非常に難しい作業です)。
それでも...これらはあなたが始めるための単なる指針です...そしてあなたがこのプロジェクトに着手することを選択した場合...私はあなたに幸運を祈ります:-)
あなたのプロジェクトは、実際には XML とはほとんど関係がなく、Java コンパイラーの作成に関係しています。これは、Java コードを中間的な中立的な形式に変換し、その形式から「別の言語」に変換することが主要なタスクであるためです。中間フォーマットがたまたま XML 構造で表現されていることは、この点ではあまり重要ではありません。
思考実験として、プロジェクトから中間形式を削除して、もう一度検討してください。
Java ソースコードを別の言語に変換する
まったく些細なことではありません。メモリ モデル、型変換/型強制などの問題を無視したとしても、基本的な "hello world" Java クラスを構文的に類似した言語 (C++ など) に変換することでさえ、プリミティブ型のみを使用して非常に複雑です。
あなたの唯一の目標が XML を学ぶことであるなら、あなたのプロジェクトはあなたの頭に水が多すぎると思います。
Javaコードの解析から始めて、その中の構造(コードブロック、制御ステートメントなど)の検出を開始する必要があると思います。そのために使用する言語はかなり自由です。XML を適切にサポートし、文字列の処理が得意なものを選択します。(もちろんJavaをお勧めします:D)
あなたがそれをしない限り、私は XML 自体について考えさえしません。
ところで、これを楽しいプロジェクトとして行っているのであれば、問題ありません。それ以外の場合: なぜパイピング スペースヌードルにそのようなコンバーターが必要なのですか? ;)