是否可以保存ANTLR4生成的解析树?例如,通过使ParseTree或它的子类Serializable
我想使用ANTLR4来解析我的项目中的源文件。我的项目相当大,包含数百个源文件。通常,我需要遍历几个源文件的解析树来获得我想要的信息。完整的语法非常庞大,甚至解析一个源文件也需要一段时间。因此,每次启动工具以获取1条信息(例如函数的调用者)时再次解析所有源文件是不切实际的。如果我只解析一次并将解析器输出保存到硬盘中,那就太好了。
如果遇到性能问题,应该确保使用的是两阶段解析策略。例如,查看以下测试中TWO_STAGE_PARSING
字段的使用情况:
TestPerformance.java
您可以在ANTLR 4问题跟踪器上提出关于使ParserRuleContext
可序列化的请求。
PS:下一个ANTLR版本(4.0.1)也将包含额外的性能改进。