使ANTLR4解析树可序列化

时间:2013-04-23 16:56:49

标签: antlr4

是否可以保存ANTLR4生成的解析树?例如,通过使ParseTree或其子类Serializable。

我想使用ANTLR4来解析项目中的源文件。我的项目非常庞大,包含数百个源文件。通常,我需要遍历几个源文件的解析树来获取我的愿望信息。完整的语法非常庞大,甚至只需要解析一个源文件就需要一段时间。因此,每次启动我的工具以便获取1条信息(例如函数的调用者)时再次解析所有源文件是不切实际的。如果我可以解析一次并将解析器输出保存到硬盘中,那将是很好的。

1 个答案:

答案 0 :(得分:1)

如果您遇到性能问题,则应确保使用两阶段解析策略。例如,请查看以下测试中TWO_STAGE_PARSING字段的用法:

TestPerformance.java

您可以就ANTLR 4 issue tracker上的ParserRuleContext序列化提出请求。

PS:ANTLR的下一个版本(4.0.1)也将包含其他性能改进。