使用Scala解析Java源代码

7

我正在开发一个静态分析工具,需要处理Java源代码。我想用Scala编写代码,以便从其函数式特性中受益。

有没有一种简单的方法可以解析Java源代码并使用Scala得到抽象语法树? 我考虑使用一些现有的Java解析器,但我想确保自己没有错过一些很酷的Scala库。


有没有已经实现的Java解析器? - mariosangiorgio
1
我不会说创建一个在语义层面上分析Java源代码的工具是“容易”的。其中涉及的远不止解析一件事情。 - Randall Schulz
@RandallSchulz 是的,我知道。我将从一些简单的分析开始。我只是想避免从头开始,并获得至少一个AST,这足以用于我的较简单分析。 - mariosangiorgio
1
重点是抽象语法树不仅仅是句法上的。如果没有为程序创建适当的符号表,就无法正确地构建它,这实际上是一种全局分析。在分离编译中,信息来自于分析源文件或.class文件。 - Randall Schulz
1
如果你想接受大量的非Java(类似Java)代码,也许可以这样做。 - Randall Schulz
显示剩余3条评论
1个回答

1
我认为Scala可以调用Java库。
你应该能够调用任何Java实现的Java解析器(例如ANTLR)。这样,你就可以得到一个成熟的解析器。

在对这个问题进行一些背景研究时,我发现了一个用ANTLR编写的Java分析工具。相比于空白状态,这肯定是更好的起点!它的介绍在这里:http://svn.apache.org/repos/asf/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/site/resources/SeriesPt4.pdf。 - Randall Schulz
是的,Scala可以调用Java库,正如我在问题中报告的那样。我只是在想是否有更好的选择。 - mariosangiorgio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接