Java 用の既存の C パーサーを使用できます。もちろん、ヘッダー ファイルの解析以外にも多くのことを行いますが、それで問題が生じることはありません。
Eclipse CDTプロジェクトのパーサーを使用します。これは Eclipse プラグインですが、Eclipse 以外でも問題なく使用できます。Eclipse の 3 つの JAR ファイルをパーサー JAR にバンドルするだけです。
CDT パーサーを使用するにはorg.eclipse.cdt.core.model.ILanguage、たとえばの実装から始めorg.eclipse.cdt.core.dom.ast.gnu.c.GCCLanguageます。getTranslationUnitコードといくつかのヘルパーを渡して、それを呼び出すことができます。コード ファイルはインスタンスによって表されorg.eclipse.cdt.core.parser.FileContentます (少なくとも CDT7 では、これは大きく変わるようです)。このようなオブジェクトを作成する最も簡単な方法はFileContent.createForExternalFileLocation(filename)、 またはFileContent.create(filename, content)です。IFileこの方法では、プロジェクトとワークスペース内でのみ機能するように見えるEclipse のことを気にする必要はありません。
返される は、ファイルのIASTTranslationUnitAST 全体を表します。その中のすべてのノードはIASTSomething、たとえばなどの型のインスタンスです。ビジター パターンを使用して AST を反復処理IASTDeclarationする独自のサブクラスを実装できます。org.eclipse.cdt.core.dom.ast.ASTVisitorさらにサポートが必要な場合は、お尋ねください。
使用する JAR ファイルは、、、、org.eclipse.cdt.core.jarおよびです。org.eclipse.core.resources.jarorg.eclipse.equinox.common.jarorg.eclipse.osgi.jar
編集: このためのソース コード スニペットを含む論文を見つけました。短縮バージョン)。