調用Eclipse CDT解析器的結果實現對C++代碼的解析 | |
作者:天涯 來源:中國自學編程網 發佈日期:1228350297 | |
public static IASTTranslationUnit getAST( IFile file) { ITranslationUnit tu = CoreModelUtil.findTranslationUnit(file); ICProject project= tu.getCProject(); IASTTranslationUnit ast=null; try { IIndex index = CCorePlugin.getIndexManager().getIndex(project, IIndexManager.ADD_DEPENDENCIES | IIndexManager.ADD_DEPENDENT); index.acquireReadLock(); try { ast=tu.getAST(index, 0); } finally { index.releaseReadLock(); } } catch (InterruptedException e) { //log(e); } catch (CoreException e) { //log(e); } return ast; } 再對IASTTranslatonUnit ast調用 getDeclarations()方法即可獲得所有的聲明信息CCorePlugin和CoreModelUtil是CDT Core提供的最重要的入口. TranslatonUnit表示一個編譯單元.可以是一個項目.一個文件.文件的一個代碼塊ASTTranslatonUnit 是編譯單元的AST表示.裏面包含了所有的信息 |