我有一个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?
答案 0 :(得分:1)
这很有趣。我前几天注意到了同样的事情。索引都是整数而不是整数。 Sam和我计划在某个时候整合一个修复程序;如果你看看分支,你现在可以玩它
https://github.com/parrt/antlr4/tree/long-intervals
泰尔