我试图将ANTLR V4与公开提供的Java 8语法- https://github.com/antlr/grammars-v4/blob/master/java8/Java8.g4结合使用
我生成了类文件并试图解析Java 8 JRE,但不知怎么在java.text.SimpleDateFormat.java上它会崩溃:
java.lang.OutOfMemoryError: GC overhead limit exceeded当我试图单独解析单个文件时,它还会使崩溃。
这个问题能解决吗?显然,ANTLR V4不能处理超过2000 LOC的文件?这是正确的假设吗?
我到目前为止所做的事:
JVM的内存从256 it更改为4GBJVM,然后更改为
java.lang.OutOfMemoryError: Java堆空间发布于 2015-10-03 02:53:51
看起来,存储库中的语法是基于我编写的语法。语法依赖于某些功能,这些功能只有在我的"optimized" fork of ANTLR 4中才能使用,这样才能更好地执行。除了使用该版本之外,您还需要做以下两件事来最大限度地提高性能:
compilationUnit,它可能如下所示:
parser.getInterpreter().setPredictionMode(PredictionMode.SLL);parser.getInterpreter().tail_call_preserves_sll = false;compilationUnit = parser.compilationUnit();} CompilationUnitContext (ParseCancellationException e) { //第2阶段:复杂和/或错误文档// TODO的高精度回退分析:重置输入流parser.setErrorHandler(新的DefaultErrorStrategy());parser.getInterpreter().setPredictionMode(PredictionMode.LL);parser.getInterpreter().tail_call_preserves_sll = false;parser.getInterpreter().enable_global_context_dfa = true;compilationUnit = parser.compilationUnit();}https://stackoverflow.com/questions/32910013
复制相似问题