2013-04-23 90 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