生成された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
Recent Comments