1

我在使用 ANLTR3 生成解析器时遇到了 OutOfMemoryError,堆空间似乎主要填充有 NFA/DFA 状态(准确地说是 org.antlr.analysis.NFAConfiguration 对象)。

假如说:

  • 通过重写语法规则不能大大减少前瞻预测所需的状态总数(实际上:这将是另一个问题)
  • 增加堆空间不是一种选择(因为已经使用了很多并且语法只有其估计大小的 60%)

可以拆分语法帮助,因为:

  • DFA/NFA 状态的总数可能会以某种方式减少(真的不要指望这个)
  • 或者每个语法的 DFA/NFA 状态的数量会更少,并且一旦生成了一个语法,它的 DFA/NFA 状态就会被丢弃?
4

0 回答 0