0

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

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

4

1 回答 1

1

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

测试性能.java

您可以提出关于在ANTLR 4 问题跟踪器ParserRuleContext上进行可序列化的请求。

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

于 2013-04-23T17:31:21.293 回答