是否有用于java 8的编译器代码与antlr4一起使用?

时间:2016-10-27 11:26:31

标签: java antlr4

我在GitHub中找到了一个来自antlr4的存储库,它有一个完整的Java 8语法文件,在这里: https://github.com/antlr/grammars-v4/blob/master/java8/Java8.g4

如果我使用antlr4,它将采用语法并创建词法分析器,解析器等。但这还不足以复制现有的Java编译器。

我们需要将Java代码挂钩到antlr4生成的类(词法分析器,解析器等)。这样我们就可以将输入源文件转换为字节代码。 GitHub中有一个名为minijava的项目,作者为Java的一个子集创建了一个编译器,它位于: https://github.com/csaroff/MiniJava-Compiler?files=1

是否有像minijava项目那样的编译器代码,但对于整个Java 8语法?

1 个答案:

答案 0 :(得分:2)

问题是你想要完成什么。如果真的想要进入编译器...... JDK是开源的(http://download.java.net/openjdk/jdk8/)。可能不是用ANTLR,但也许是你最好的选择。另一种选择是来自eclipse的java编译器,也是开源的。

但可能你真的不想进入编译器...但只想挂钩到编译过程中以生成一些额外的代码?然后Java Annotation处理器(https://docs.oracle.com/javase/8/docs/api/javax/annotation/processing/Processor.html)就是你要找的。

或许您想要对已经创建的类进行后期处理?然后可能会使用一些字节码生成/操作框架(例如http://jboss-javassist.github.io/javassist/)。

我认为没有“完整的ANTLR语法与其余的编译器”项目。