3

ClangからASTを取得しようとしていますが、今のところうまくいきません。私はここスタックで1年前の質問を見つけました。これは、Clangを使用してastを取得する他の2つの方法について言及しています。

./llvmc -cc1 -ast-dump file.c

./llvmc -cc1 -ast-print file.c

この質問では、doxygenが言及されており、astが与えられている表現ですが、さらに分析を実行できるように、XMLなどのテキスト形式でdoxygenを探しています。

最後に、正確にXMLのインポートについてスタック上に別の質問がありましたが、いくつかの理由で中止されました。

したがって、私の質問は、Cの特定のコードのast関連情報を取得するために、コンソールからどのバージョンとどのように使用できるかということです。これは上記のような非常に苦痛のない1行のコマンドコードだと思いますが、ドキュメントのインデックスは私が読んだ限りではastについて何も参照していませんでした。本当に私が探しているもの。

上記のすべてのコマンドを試しましたが、バージョン2.9ではすべて失敗し、各バージョン間でllvmが大幅に変更されていることがわかりました。

ありがとうございました。

4

1 に答える 1

3

OPは「他の提案も受け入れる」と言っています。

彼は、 C フロント エンドを備えたDMS ソフトウェア リエンジニアリング ツールキットを検討するかもしれません。

これによって生成された C AST を表示するのは非常に簡単ですが、同じ C フロントエンド (ObjectiveC は C の方言です) を使用して DMS によって生成された [既に SO にある] ObjectiveC AST を表示する方が簡単です。https://stackoverflow.com/a/10749970/120163を参照してください 。DMS もこれに相当する XML を生成できます。

ツリーをテキストとしてエクスポートすることはお勧めしません。これは、実際のコードの実際のツリーは単純に巨大であり、経験上、テキストまたは XML オブジェクトとして操作しにくいためです。通常、解析以外の機械が必要です。解析後の生活に関する私の議論を参照してください

于 2012-06-08T22:34:34.590 に答える