C の構文解析は難しいことで有名であり、やりたいことを行うには、おそらく名前と型の解決が必要です。これを正しく行うには、完全なコンパイラ フロント エンドに相当するものが必要です。実際には、読み取るコードにはプリプロセッサ ディレクティブが含まれているため、プリプロセッサも必要です。これらのデバイスを組み立てるには膨大な作業が必要です。十分な時間がない限り、自分で書きたくないというのは正しいことです。
あなたの現実的な選択は、GCC (あなたの仕事のためにねじるのが難しい)、GCCXML (整形式のプログラムから宣言を生成したい)、または Clang (同様に) などのオープン ソース パッケージです。Eclipse CDT には (同様に) C パーサーがあります。これらがあなたを満足させる API やライセンスを持っているかどうかはわかりません。クローズド ソース パッケージは、ニーズにより適している場合があります。EDG は C および C++ のフロント エンドを提供し (依然として完全に整形式のプログラムのみを処理したい)、私の会社 (Semantic Designs) も DMS ソフトウェア リエンジニアリング ツールキットを介して提供しています。
このセットのうち、DMS だけが、型宣言を分離して簡単に解析できる可能性があります。文法の任意の非終端記号を解析できます (あいまいなものも含む)。さらに重要なことに、本当に「メタ モデルに移動」したい場合は、宣言を解析し、サブタイプ/参照型を決定する必要がある可能性が高いため (たとえば、typedef を使用する場合)、完全な解析を組み合わせる必要があります。バックグラウンド定義を提供するための名前/型の解決、次に関心のある特定の宣言の解析、バックグラウンド定義によって提供されるシンボル テーブル コンテキストを使用した特定の宣言の名前と型の解決が続きます。DMS 機械は、そのすべての機能を提供します。