ANTLRの一般的なエラー

485 ワード

問題を解決したばかりで、StackOverFlowでの質問は繰り返しと表示され、antlr 4-ANTLR 4.5-Mismatched Input'x'expecting'x'-Stack Overflowという答えが返ってきました.
まとめて記録しておきます.
ANTLRが生成したlexerとparserはほぼ独立して動作し,parserはlexerの挙動に影響を及ぼすことはできない(ここでは埋め込み動作やsetmodeなどは考慮しない).
したがって、ANTLRによって生成されたlexerは、最も長いマッチングの原則に簡単に従い、2つの文法規則が最も長いマッチングが可能であれば、grammarファイルに現れる順序でマッチングします.
したがって、1つの文法規則が別の文法規則のサブセットである場合は、できるだけ前に置くべきであり、これが問題を解決できない(または他の問題を導入できる)場合は、別の方法を探すしかなく、通常は埋め込み動作の方法で解決することができます.