1

ANLTR3 でパーサーを生成しているときに OutOfMemoryError に遭遇しました。ヒープ スペースは主に NFA/DFA 状態 (正確には org.antlr.analysis.NFAConfiguration オブジェクト) でいっぱいになっているようです。

仮定して:

  • 先読み予測に必要な状態の総数は、文法規則を書き直しても大幅に減らすことはできません (実際には、これは別の問題になります)。
  • ヒープ領域を増やすことはオプションではありません (すでに大量に使用されており、文法は推定サイズの 60% しかないため)

文法を分割すると、次のいずれかの理由で役立つ可能性があります。

  • DFA/NFA 状態の合計量は、どういうわけか少なくなる可能性があります (実際には、これを期待しないでください)。
  • または、文法ごとの DFA/NFA 状態の量が少なくなり、文法が生成されると、その DFA/NFA 状態は破棄されますか?
4

0 に答える 0