ビジターによって ANTLR4 解析ツリーを処理するとき、ルール ノードが属する親ルール ノードを知る必要がある場合があります。のオンライン API ドキュメントにはParserRuleContext
、オブジェクトが表すルールの名前を返すことができるメソッド/フィールドが見つかりません。ParserRuleContext
ルール名がそのサブクラス名の一部であることはわかっています。たとえば、function_definition
ルール ノードはクラスFunction_definitionContext
です。しかし、クラス名を調べるには、Java リフレクションを使用Context
し、最後に手動で文字列をストライプ化する必要があります。
ParserRuleContext
オブジェクトが表すルール名を取得する簡単な方法はありますか?
親ルール ノードの名前を照会することは一般的な要件です。たとえば、C++ 文法を処理する場合、C++ クラス宣言は、グローバル スコープ、関数定義、または別のクラス宣言に含めることができます。これは、ルール ノードを,またはルール ノードclass_declaration
の下にネストできることを意味します。の下にあるノードだけを分離したい場合は、親ノードを調べて、またはでないことを確認する必要があります。global_scope
function_definition
class_declaration
class_declaration
global_scope
function_definition
class_declaration