0

C++ ソース コードの内部構造を反映できる、Visual C++ コンパイラ用のgcc-xmlに相当するツールまたは類似のツールはありますか?

私の目標は、次のような入力として C++ (ネイティブ C++) ソースまたはヘッダー ファイルを使用して出力を生成することです。

  1. すべてのプリプロセッサ ディレクティブが処理されます。(これは、/P、/E、または /EP コンパイラ スイッチを使用して既に実現できます。)
  2. すべてtypedefの がその基本型に展開されます。
  3. すべての変数/関数/クラス/メンバーの名前とその署名のリストが取得されます。
  4. 必要に応じて、インスタンス化されたすべてのテンプレート クラスのリストを取得できます。

例としてtypedef、このコード:

typedef string my_type;
my_type s1;

次のように拡張されます:

std::basic_string<char, std::char_traits<char>, std::allocator<char> > s1;

または私をこれに導くことができる何か。

これは、 gcc-xml ( gccを中間コンパイラとして使用)、または多数の非 MSVC オプションを使用することで実現できることを知っています。ただし、重要な要件は「コンパイルはすべて VC++ で行う」ことです。

後の機能の少なくとも 1 つを解決できる、または目標を達成するためのガイドとなる解決策または回避策を歓迎します。

4

1 に答える 1

1

Semantic Designs(私の会社)は、MSVisualStudioを含むC++のさまざまな方言用のC++パーサーを備えたDMSSoftwareReengineeringToolkitを提供しています。

DMSは、必要なデータを具体的に生成するようには設計されていませんが、かなり簡単に生成されます。DMSは設計上、カスタマイズ可能なユーティリティツールであり、カスタムの回答を得るには少し設定が必要です。あなたの場合、あなたが望むほとんどすべてがDMSのC ++シンボルテーブルで利用可能であるため、カスタマイズは「シンボルテーブルを歩き、あなたが望むものをフォーマットして抽出する」でしょう。これだけをサポートするAPIの完全なセットがあります(他の多くの便利なプログラム分析/操作タスクも同様です)。

于 2013-02-20T09:19:15.060 に答える