antlr4获取给定父节点和规则类的规则节点

时间:2016-07-28 12:49:57

标签: antlr4

ParserRuleContext的这个方法有什么意义

<T extends ParserRuleContext>  List<T>
T   getRuleContext(Class<? extends T> ctxType) 

当我尝试使用此方法获取父级的子上下文时,它始终返回null。 例如

parentRuleContext.getRuleContext(ChildOneContext.class,MyParser.Rule_ChildOne)

我假设应该返回所有ChildOneContexts但总是返回null。

我错误地使用这种方法,它的目的是不同的?由于没有关于此的文档,不清楚使用。

1 个答案:

答案 0 :(得分:0)

getRuleContext应该返回第i个子节点(来自带有i参数的变体)或给定类类型的所有子节点。如果你回到null,我说你没有给定类型的孩子。您可以通过检查children成员轻松检查这一点,看看是否存在ChildOneContext个孩子。