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 のことを気にする必要はありません。
返される は、ファイルのIASTTranslationUnit
AST 全体を表します。その中のすべてのノードはIASTSomething
、たとえばなどの型のインスタンスです。ビジター パターンを使用して AST を反復処理IASTDeclaration
する独自のサブクラスを実装できます。org.eclipse.cdt.core.dom.ast.ASTVisitor
さらにサポートが必要な場合は、お尋ねください。
使用する JAR ファイルは、、、、org.eclipse.cdt.core.jar
およびです。org.eclipse.core.resources.jar
org.eclipse.equinox.common.jar
org.eclipse.osgi.jar
編集: このためのソース コード スニペットを含む論文を見つけました。短縮バージョン)。