是否可以保存和恢复ANTLR4状态以避免预热时间?

是否可以保存和恢复ANTLR4状态以避免预热时间?,antlr4,Antlr4,使用ANTLR v4,第一个文件的解析需要几秒钟,接下来的文件的解析几乎是瞬间完成的 是否可以保存ANTLR的状态以避免预热时间 decisionToDFA是唯一应该序列化的数据结构吗?我只能为ANTL3说话,但是如果Antl4没有类似的机制,我会非常惊讶。在ANTLR3中,您可以重置解析器和lexer,并使用新字符串重新开始。但您不会创建新的解析器实例,而是从以前的运行中重用它。但是,我无法在多个执行(不同的进程/JVM)之间共享状态。通常,我希望在我的语言的标准库上训练解析器,然后将经过训练

使用ANTLR v4,第一个文件的解析需要几秒钟,接下来的文件的解析几乎是瞬间完成的

是否可以保存ANTLR的状态以避免预热时间


decisionToDFA
是唯一应该序列化的数据结构吗?

我只能为ANTL3说话,但是如果Antl4没有类似的机制,我会非常惊讶。在ANTLR3中,您可以重置解析器和lexer,并使用新字符串重新开始。但您不会创建新的解析器实例,而是从以前的运行中重用它。但是,我无法在多个执行(不同的进程/JVM)之间共享状态。通常,我希望在我的语言的标准库上训练解析器,然后将经过训练的解析器的状态放入编译器的代码中。因此,如果我只编译一个文件,我就不用支付预热时间。