CDT:如何分析未链接到Eclipse工作区中某个项目的c / c ++文件的AST

时间:2011-11-25 14:45:36

标签: eclipse-plugin eclipse-rcp eclipse-cdt

在我的源代码分析Eclipse RCP项目中,我想getAST分析一些c / c ++文件的AST,它既不是eclipse工作区内项目的源文件,也不是项目中项目的链接资源。 eclipse工作区。基本上,我的RCP应用程序中没有任何工作空间。任何建议将不胜感激!

欢呼声,

2 个答案:

答案 0 :(得分:0)

您需要以编程方式从源文件夹创建新项目(确保您的内部有一些基本的.cproject文件,并且源代码正确):

IWorkspace workspace = ResourcesPlugin.getWorkspace();
project = workspace.getRoot().getProject("project");
if (!project.exists()) {
    IProjectDescription description = workspace.newProjectDescription("project");
    CCorePlugin.getDefault().createCDTProject(description, project, null);
} else {
    project.refreshLocal(IResource.DEPTH_INFINITE, null);
}

您可以使用AST:

ITranslationUnit translationUnit = (ITranslationUnit) CoreModel.getDefault().create(file);
IASTTranslationUnit ast = translationUnit.getAST();

答案 1 :(得分:0)

如果您碰巧在编辑器中拥有该文件,我发现了一种更简单的方法,那么您可以在编辑器部分使用getEditorInput方法来获取ITranslationUnit,即:

// here is how you can get the active editor IWorkbench workbench = PlatformUI.getWorkbench(); IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); IEditorPart editorPart = window.getActivePage().getActiveEditor();

// for an external file the editor input will be of type ITranslationUnitEditorInput IEditorInput input = editorPart.getEditorInput(); if (input instanceof ITranslationUnitEditorInput) { ITranslationUnit externalTU = ((ITranslationUnitEditorInput) input).getTranslationUnit(); }