如何将外部文件传递给 ASTParser 或任何兼容的 AST 库?
参考这个上一个问题,我不是能够在 eclipse 之外获取 IFile 或 ICompilationUnit。
我需要 org.eclipse.jdt.core.dom 库来解析和提取树结构。
我看到了方法
ASTParser 解析器 = ....;
parser.setSource(char[] source);
如何传递外部项目文件或目录的路径?
我需要绑定,因此该方法必须设置为 true
parser.setResolveBindings(true);
如果不可能,您是否知道有任何兼容的库可以构建 AST(抽象语法树)?
谢谢
Referring to this previous question, I'm not able to get an IFile or ICompilationUnit outside eclipse.
I need org.eclipse.jdt.core.dom library to parse and extract tree structure.
I saw the method
ASTParser parser = ....;
parser.setSource(char[] source);
how can I pass the path of a external project-file or directory?
I need bindings so this method must be set to true
parser.setResolveBindings(true);
If it wont be possible, do you know any compatible libraries to build an AST (Abstract Syntax Tree)?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您想将其用作 Eclipse 插件还是独立的 Java 应用程序?
如果它是一个 Java 应用程序,我认为您没有对这些 IFile 或 ICompilationUnit 的任何引用,除非您使用 ASTParser.setEnvironment 来创建一个新的工作区(我不知道如何创建)。如果它是一个 Java 独立应用程序,请检查以下示例:
使用该代码,您可以将任何 .java 内容转换为 AST 并解析它(我从未尝试过插入新的 AST 节点,然后以此编写新课程,但我相信这是可能的)。
这是我第一次尝试该实现: http://pasteit.com/19436
Do you want to use it as an Eclipse plugin or as a standalone Java application?
If it's as a Java application, I don't think you have any references to those IFile or ICompilationUnit, unless you use ASTParser.setEnvironment in order to create a new workspace (which I don't know how). If it's as a Java standalone application, check this examples:
http://dev.eclipse.org/svnroot/tools/org.eclipse.objectteams/trunk/testplugins/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/dom/StandAloneASTParserTest.java
With that code you can convert any .java content into an AST and parse it (I never tried to insert new AST nodes and then write e new class with that, but I believe it's possible).
Here's my first try with that implementation: http://pasteit.com/19436
可以正常读取任何文件并将其转换为char数组;我不明白为什么这会成为一个问题。从jdt 3.6开始。您可以使用 setEnvironment 版本,以便 setResolveBindings 可以实际工作。更多信息:链接。
人们已经使用过它,但说实话,我仍然无法通过这种方法获得绑定。
You can read any file normally and convert it to char array; i don't see why would this be a problem. And from the jdt 3.6. version you can use setEnvironment so the setResolveBindings can actually work. More info: link.
People have used it, but to be honest, I am still not able to get bindings with this approach.