当访问者处理我的 ANTLR4 解析树时,有时我需要知道我的规则节点所在的父规则节点。在 的在线 API 文档中ParserRuleContext
,我发现没有方法/字段可以返回对象所代表的规则的名称。我知道规则名称是ParserRuleContext
的子类名称的一部分,例如function_definition
规则节点是 class Function_definitionContext
。但是要查询类名,我需要使用 Java 反射并Context
在最后手动条带化字符串。
是否有更简单的方法来检索ParserRuleContext
对象所代表的规则名称?
查询父规则节点的名称是一种常见的需求。例如,在处理 C++ 语法时,C++ 类声明可以在全局范围、函数定义或另一个类声明中,这意味着规则节点class_declaration
可以嵌套在global_scope
、function_definition
或class_declaration
规则节点下。如果我只想隔离 下class_declaration
的那些节点global_scope
,我需要查找父节点并确保它们不是function_definition
or class_declaration
。