目标是
从将 Groovy 用于预处理器指令的脚本语言开始(整个预处理器语言)
使用 Antlr 4 解析该脚本(将常规脚本与打印和剥离 # 用于 groovy 并作为 Groovy 脚本输出)
在嵌入式 Java 应用程序中编译 Groovy 脚本(Groovy 应该能够访问该应用程序中的类等)
当该脚本想要使用已编译的 Groovy 时(如使用 dll 的项目),稍后在另一个脚本编译期间加载该脚本。加载时,Groovy 脚本将运行并生成特定于用户项目的代码(还记得打印语句吗?)。
为什么我要编译它?当最终用户在项目中使用这些外部资源(本质上是 dll)时,不需要一遍又一遍地解析它们。我希望他们处于准备就绪状态。
我的第一个想法是将 Antlr 生成的 AST 序列化为二进制,然后将其加载回来,但我意识到编译后的 Groovy 脚本会更智能。
问题是,如何保存 Groovy 在动态加载脚本时所做的编译,然后在以后加载它?
任何对答案的帮助将不胜感激=)。