2

いくつかの言語 (Java、C、C#...) で記述されたファイルを解析し、AST (抽象構文ツリー) を xml にトレースする必要があります。(実際には、それを操作して別の言語にトレースすることが目的です。この 2 番目の部分は実装されています)。調査の結果、これを行うための一般的なアプローチがないことがわかりました。

最も近いものはsrcMLです。しかし、最初の問題は、Java ではないということです =)。2 番目の問題は、言語の量です (3 つだけ)。

DMSがこの問題を解決できることは知っていますが、無料でもオープンソースでもありません。

したがって、私が理解しているように、これを行うには 1 つの方法があります。ANTLRを使用して、AST を XML に変換してみてください。質問は、ANTLR(Java)でそれを行う方法です。または、これを行うための(ANTLRの方法ではない)いくつかを見逃しているかもしれません。

4

1 に答える 1

2

ANTLR 以外にも、これを実行できる Java ツールが他にもあります (その 1 つを挙げれば、 JavaCCが一般的な代替手段です)。

パーサー ジェネレーターを使用してこの問題を解決するには、次の手順を実行する必要があります。

  1. パーサーが解釈できる文法を定義し、レクサーとパーサーを生成します (この場合、3 つの言語に 3 つの文法が必要です)。
  2. パーサーが作成した AST を繰り返し処理し、プレーン テキスト (この場合は XML) を出力します。

Java、C#、および C の文法は、ANTLR の Wikiで入手できます。JavaCC (およびその他のパーサー生成ツール: Google はここであなたの友達です) には、すぐに利用できる文法が存在すると確信しています。ただし、これは Wiki であり、多くの文法は実験段階にあるか、エラーが含まれていることに注意してください。

ステップ 1 をスキップして、AST を構築する既存のパーサーを見つけることができます。自分で AST を調べて、そこから XML を作成するだけです。たとえば、ここに Java 5 パーサーがあります (他のパーサーについても、Google はあなたの味方です)。

幸運を。

于 2011-11-02T16:11:32.073 に答える