« CDTのパーサーを他の用途で使う(1) | トップページ | Eclipse RCP »

CDTのパーサーを他の用途で使う(2)

生成されたAST (Abstract Syntax Tree) の各ノードの型を調べると、元として与えたC/C++のソースコードの構文要素の種類を調べることができる模様。

そのためには、Visitorを作成し、ASTに含まれている調べたい種類のノードを走査する。
例えば、Statement (文) という構文要素に分類されるノードを探すには、

ASTVisitor visitor = new ASTVisitor() {
    public int visit(IASTStatement stmt) {
        System.out.println(stmt.getRawSignature());
        return ASTVisitor.PROCESS_CONTINUE;
    }
};
visitor.shouldVisitStatements = true;
translationUnit.accept(visitor);

とする。

さらに、Statementの種類を詳しく調べることもできる。
例えば、Return Statementであることを調べるには、

    public int visit(IASTStatement stmt) {
        System.out.println(stmt.getRawSignature());
        if ( stmt instanceof IASTReturnStatement ) {
            System.out.println("  --> This is a return statement !!");
        }
        return ASTVisitor.PROCESS_CONTINUE;
    }

どんな構文を認識できるかについては、以下のヘルプを参考にする。
http://help.eclipse.org/help33/topic/org.eclipse.cdt.doc.isv/reference/api/org/eclipse/cdt/core/dom/ast/package-summary.html

|

« CDTのパーサーを他の用途で使う(1) | トップページ | Eclipse RCP »

Eclipse」カテゴリの記事

「プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/63247/44926519

この記事へのトラックバック一覧です: CDTのパーサーを他の用途で使う(2):

« CDTのパーサーを他の用途で使う(1) | トップページ | Eclipse RCP »