当重写 ANTLR 的 BaseListener 中的方法时,我可以假设 ctx 始终为非空吗?

问题描述 投票:0回答:1

我目前正在使用 ANTLR 并重写生成的 BaseListener 类中的方法。具体来说,我想知道是否可以安全地假设传递给这些重写方法的 ctx(上下文)参数始终为非空。

例如,如果我重写这样的侦听器方法:

@Override
public void enterExpr(MyGrammarParser.ExprContext ctx) {
    // Can I assume 'ctx' is always non-null here?
}

是否存在 ctx 可能为 null 的边缘情况(例如某些解析错误或可选规则),或者在调用方法时始终保证它是有效的上下文对象?

java antlr antlr4
1个回答
0
投票

是的,你可以。上下文总是被创建的,如果你检查生成的代码,你可以看到上下文在调用相应的监听函数时使用了“this”,所以它一定是存在的!

© www.soinside.com 2019 - 2024. All rights reserved.