0

我有一个 2.5 GB 的文件,我试图用 Java 中的 Antlr 解析它。首先我有一个内存不足的异常,所以我增加了最大堆大小。然后它失败了这个堆栈跟踪:

Exception in thread "AWT-EventQueue-0" java.lang.NegativeArraySizeException
    at java.util.Arrays.copyOf(Arrays.java:2882)
    at org.antlr.v4.runtime.ANTLRInputStream.load(ANTLRInputStream.java:123)
    at org.antlr.v4.runtime.ANTLRInputStream.<init>(ANTLRInputStream.java:86)
    at org.antlr.v4.runtime.ANTLRInputStream.<init>(ANTLRInputStream.java:78)
    at MyClass.runAntlr(MyClass.java)

我的猜测是某些索引变量溢出。

是否有可以处理任意大文件的输入流?还是 ANTLRInputStream 的更大文件?

4

1 回答 1

1

那很好笑。前几天我自己也注意到了同样的事情。索引都是整数而不是。Sam 和我计划在某个时候集成一个修复程序;如果你看分支,你现在可以玩它

https://github.com/parrt/antlr4/tree/long-intervals

于 2013-10-25T00:11:10.430 回答