繁体   English   中英

JavaCC:我希望从动态生成的jj文件生成java类,并在运行时编译它们

[英]JavaCC: I wish to generate java classes from dynamically generated jj files and to compile them at runtime

我正在重构一个项目,该项目在编译期间使用javaCC创建专有语言解析器。 由于语言的不同变体可以同时存在,因此决定在运行时从jj文件动态生成java源代码,然后将java文件编译成类文件并加载它们。

为了更有效地这样做,我想在内存中生成java文件到我想的某些流。 JavaCC的API Javadoc不太容易访问:)。

如何最好地进步?

kdgregory建议你最好修改你的构建过程。 但是, 本文描述了如何创建一个新的类加载器,它使用编译器API动态编译Java代码。 修改它以从文件而不是字符串中读取应该相当容易。

您可以使用Compiler API aka JSR-199(请参阅javax.tools )在内存生成的类中进行编译。 您需要扩展javax.tools.SimpleJavaFileObject类以创建一个类,该类将表示RAM中Java类的源文本。

看看下面的例子 ,它有一个实际上正在执行的RAMResidentJavaFileObject的实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM