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

Is there a compiler code for java 8 to use with 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项目那样的编译代码,但是对于整个Java8语法?

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

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

或者您想对已经创建的 class 进行后处理?然后可能会使用一些字节码 generating/manipulating 框架(例如 http://jboss-javassist.github.io/javassist/)。

我认为没有"complete ANTLR grammar with the rest of a compiler"项目。