我在 GitHub 中找到了来自 antlr4 的存储库,其中包含 Java 8 的完整语法文件,如下所示: https://github.com/antlr/grammars-v4/blob/master/java8/Java8.g4
如果我使用antlr4,它将获取语法并创建词法分析器、解析器等。但这不足以复制现有的Java编译器。
我们需要 Java 代码来 Hook antlr4 生成的类(词法分析器、解析器等),以便我们可以将输入源文件转换为字节代码。 GitHub 上有一个名为 minijava 的项目,作者为 Java 的一个子集创建了一个编译器,如下所示: https://github.com/csaroff/MiniJava-Compiler?files=1
是否有类似 minijava 项目的编译器代码,但适用于整个 Java 8 语法?
最佳答案
问题是你想要完成什么。如果您真的想要进入编译器……JDK 是开源的 ( http://download.java.net/openjdk/jdk8/ )。可能不适合 ANTLR,但也许是你最好的选择。另一个选择是来自 eclipse 的 java 编译器,也是开源的。
但是您可能并不真的想摆弄编译器......而只想 Hook 编译过程以生成一些额外的代码?那么 Java 注解处理器 ( https://docs.oracle.com/javase/8/docs/api/javax/annotation/processing/Processor.html ) 就是您所寻找的。p>
或者也许您想对已经创建的类进行后处理?然后可能会使用一些字节码生成/操作框架(例如 http://jboss-javassist.github.io/javassist/ )。
我认为不存在“包含编译器其余部分的完整 ANTLR 语法”项目。
关于java - java 8 是否有与antlr4 一起使用的编译器代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40283452/