私はclangで手続き型のデータフロー解析を行っています。現在、私はlibtoolingを使ってソースファイルを解析し、AST訪問者を呼び出しています。 問題は、いくつかの.cファイルに対して1つのASTを作成する方法です。clangを持つ複数のソースファイルのAST
私はASTImportクラスを使用しようとしましたが、いくつかのASTノードのインポートをサポートしていません。さらに、私はCompilerIstanceを作成し操作するときに何か間違ったことをしており、デストラクタでクラッシュします。
非常によく似たオプションがASTImportActionでしたが、この場合はどのコマンドラインパラメータをClangToolに渡すべきかはわかりません。
第3の選択肢は、すべての.cファイルに対してASTUnitsを作成し、それぞれの定義を探すことでした。ユーザー定義型間の対応を見つける方法がはっきりしません。記録。 ASTImportではIsStructurallyEquivalent()関数を使用していますが、匿名の名前空間で宣言されているため、このコードをすべて自分のプログラムにコピーすることしかできません。また、すべてのASTノードをサポートするわけではありません。
インターネットからこのリンクhttp://lists.cs.uiuc.edu/pipermail/cfe-dev/2012-August/023865.htmlが最も適切だと思われますが、私にとって解決策の技術的な詳細は不明です。
ご提案は大歓迎です。 多くのありがとうございます。
なぜ、複数のファイルに対して「1つの」ASTを生成したいのですか?各ファイルに対して1つのASTを処理するだけの理由は何ですか? –
私は誰かがこれについての答えを持っていれば幸いです:\私は今同じことをやろうとしています。 –