我正试图解析python3中非常大的gzip压缩(10+GB(文件。我没有创建解析树,而是根据这个答案中的建议使用了嵌入式操作。
然而,查看FileStream
代码时,它希望读取整个文件,然后对其进行解析。这对大文件不起作用。
所以,这是一个由两部分组成的问题。
- ANTLR4是否可以使用一个文件流,可能是自定义的,允许它一次读取文件的块?类接口应该是什么样子
- 基于以上所述;是";,该类是否需要处理查找操作,如果底层文件是gzip压缩的,这将是一个问题
简短回答:不,不可能。
Long(er(答案:ANTLR4可能会使用无限制的前瞻性,因此它依赖于流来寻找任何位置,而不会延迟,或者解析速度将下降到几乎保持不变。出于这个原因,所有运行时都使用一个正常的文件流,它一次读取整个文件。
过去曾有人讨论/尝试创建一个只缓冲部分输入的流,但我还没有听说任何真正有效的方法。