我正在尝试用Clojure分析Java源文件,但我找不到办法做到这一点.
首先,我想使用Eclipse AST插件(通过将必要的JAR复制到我的Clojure项目中)但是在看到Eclipse AST的API(基于访问者的walker)后我放弃了.
然后我尝试用ANTLR创建一个Java解析器.我只能为ANTLR找到一个Java 1.6语法(http://openjdk.java.net/projects/compiler-grammar/antlrworks/Java.g)并且它不能用最新的ANTLR编译(这里是错误我'得到).
现在我不知道我该怎么做.在最坏的情况下,我会尝试使用Eclipse AST.
有谁知道用Clojure解析Java文件的更好方法?
谢谢.
编辑:澄清我的观点:我需要在Java项目中找到一些特定的方法调用并检查它的参数(我们有多个方法定义,具有不同类型的参数).现在我有一个用Java编写的简单解决方案(Eclipse AST),但我希望尽可能在这个项目中使用Clojure.
...并且它不能使用最新的 ANTLR 进行编译...
我无法重现这一点。
使用 ANTLR v3.2,我收到一些警告,但没有错误。使用 ANTLR v3.3 和 v3.4(最新版本),我可以毫无问题地生成解析器。
您没有提到您如何(尝试)生成词法分析器/解析器,但它对我来说是如何工作的:
java -cp antlr-3.4.jar org.antlr.Tool Java.g
Run Code Online (Sandbox Code Playgroud)
这是我运行命令时的输出:
LS wget http://www.antlr.org/download/antlr-3.4-complete.jar wget http://openjdk.java.net/projects/compiler-grammar/antlrworks/Java.g java -cp antlr-3.4-complete.jar org.antlr.Tool Java.g LS

如您所见,.java词法分析器和解析器的文件已正确创建。
您可以使用像这样的现有解析器(据我所知仅限 Java 1.5)并从 Clojure 代码中调用它,而不是自己生成解析器(从语法)。
| 归档时间: |
|
| 查看次数: |
1456 次 |
| 最近记录: |