gpt4 book ai didi

java - 使用java中的antlr获取有关Java类的元数据

转载 作者:太空宇宙 更新时间:2023-11-04 08:42:52 25 4
gpt4 key购买 nike

我已经从 Antlr 站点下载了 Antlr 3.3 和 antlr 作品以及 Java.g。我能够使用适用于 Java.g 的 Antlr 成功生成 JavaParser、JavaLexer.java 和 token 。然后,我在 IDE 中安装了 antlr jar,并按照以下说明在我的代码中使用它: http://www.antlr.org/wiki/pages/viewpage.action?pageId=789

当上面的文档说要编写以下行代码时,出现了第一个问题:

RuleReturnScope result = parser.compilationUnit();

问题是 parser.compilationUnit() 不返回结果。

然后我尝试按照“解析树”下的示例进行进一步操作,但这并不完整。

我找不到任何关于如何使用这个库的好的文档。

这是我想做的:-在 Java 中,将文件名、文件对象或文件内容作为字符串提交给 Antlr,并让它返回某种类型的对象,我可以在代码中导航该对象,从而提供诸如导入、方法、类变量、表达式等内容。

基本上 NetBeans IDE 6.9.1 所做的重构,如修复导入、转到源代码、重命名变量等。我需要的只是有关该类的元数据,但我不知道如何获取它。

谢谢。

最佳答案

要回答为什么 compilationUnit 不返回任何结果的问题,是因为如果您自己没有在规则上指定返回类型,则解析器规则只会被转换为

public void nameOfTheParserRule() { 
...
}

如果您在语法的 options { ... } 部分中将输出设置为 AST,解析器规则默认返回 RuleReturnScope 类型的对象。 ,我怀疑在您的情况下出了问题,但我无法确定,因为您没有发布您的语法,并且您提供给语法 Java.g 的链接不会生成任何内容:在能够从中生成解析器和词法分析器之前,需要对其执行某些操作。你很可能做错了事:)。

祝你好运!

关于java - 使用java中的antlr获取有关Java类的元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4943999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com