用于流解析器的Java或Scala库

时间:2015-02-17 09:06:44

标签: java scala parsing

据我所知,Scala解析器组合器需要将整个文件放在内存中,对于大小为几十GB的文件来说它并不实用。无论如何,解析器组合库比手头的任务所需的功能更强大,所以我正在考虑推出简单的FSA解析器。是否有一些图书馆可供选择,或者除了switch以外的文字墙外没有别的办法?

1 个答案:

答案 0 :(得分:0)

  

据我所知,Scala解析器组合器需要整个文件   在内存中,对于几十个文件来说这不太实用   千兆字节大小

如果您需要解析一个巨大的文件,可以使用BufferedReader并使用该阅读器调用parseAll。像这样:

val bufferedReader: BufferedReader = ???
val myResult = MyParser.parseAll(MyParser.rootParser, bufferedReader)

这样就会以块的形式读取文件,这样就不会因为内存不足而烦恼。

或者,如果您需要特定于解析器组合器API的读取器,则可以从PagedSeqReader创建bufferedSource

val rdr = new PagedSeqReader(PagedSeq.fromReader(Source.fromFile(new File("huge_file")).bufferedReader()))