我在使用ANLTR3生成解析器时遇到OutOfMemoryError,并且堆空间似乎主要填充NFA / DFA状态(准确地说是org.antlr.analysis.NFAConfiguration对象)。
假设:
- 预测预测所需的状态总量不能减少
基本上通过重写语法规则
(实际上:这将是另一个问题)
- 增加堆空间不是一种选择
(因为已经使用了很多,语法只有估计大小的60%)
可以分割语法帮助,因为:
- DFA / NFA状态的总量可能会少一些(不要指望这个,真的)
- 或每个语法的DFA / NFA状态量将少于一次语法
已经生成,其DFA / NFA国家被废弃了?