2013-04-23 56 views
0

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

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

回答

1

如果您遇到性能问题,应确保您使用的是两阶段解析策略。举一个例子,看看TWO_STAGE_PARSING场在随后的测试中使用:

TestPerformance.java

可以做出关于做ParserRuleContext序列化的ANTLR 4 issue tracker的请求。 PS:下一版本的ANTLR(4.0.1)也将包含额外的性能改进。

+0

链接有误,现在是https://github.com/antlr/antlr4/blob/master/tool-testsuite/test/org/antlr/v4/test/tool/TestPerformance.java – 2017-05-09 09:56:19