Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 拆分ANTLR3语法(生成复合语法)是否会导致NFA/DFA状态的总体减少?_Java_Antlr3 - Fatal编程技术网

Java 拆分ANTLR3语法(生成复合语法)是否会导致NFA/DFA状态的总体减少?

Java 拆分ANTLR3语法(生成复合语法)是否会导致NFA/DFA状态的总体减少?,java,antlr3,Java,Antlr3,在使用ANLTR3生成解析器时,我遇到了OutOfMemoryError,堆空间似乎主要由NFA/DFA states org.antlr.analysis.NFA配置对象填充 假设: 前瞻预测所需的状态总量不能减少 实质上是通过重写语法规则 事实上:这将是另一个问题 增加堆空间不是一个选项 因为已经使用了很多,语法只占估计大小的60% 拆分语法是否有帮助,因为: DFA/NFA州的总数可能会少一些——真的,别指望会这样 或者,每种语法的DFA/NFA状态数量将更少,并且每种语法一次 已生成,其

在使用ANLTR3生成解析器时,我遇到了OutOfMemoryError,堆空间似乎主要由NFA/DFA states org.antlr.analysis.NFA配置对象填充

假设:

前瞻预测所需的状态总量不能减少 实质上是通过重写语法规则 事实上:这将是另一个问题 增加堆空间不是一个选项 因为已经使用了很多,语法只占估计大小的60% 拆分语法是否有帮助,因为:

DFA/NFA州的总数可能会少一些——真的,别指望会这样 或者,每种语法的DFA/NFA状态数量将更少,并且每种语法一次 已生成,其DFA/NFA状态被丢弃?
是否有可能进行一些预处理?这是一种没有保留关键字的语言吗?我无法回答有关NFA/DFA状态的问题,但如果能提供更多关于该语言的详细信息,我可能会帮助您制定一个策略。该语言是COBOL,意味着500多个保留关键字和一些上下文敏感关键字。通过重新构造一些语法规则,我现在已经成功地将内存使用率降低到2.8G-Xmx2800M以下,但我担心我很快会再次遇到这种情况,因为语法仅为其预期最终大小的60-70%。是一个开源cobol解析器。看起来他们决定用岛语法扩展ANTLR来处理复杂性。其他人也曾经使用过COBOL解析器。我建议检查antlr兴趣电子邮件组档案。祝你好运