我目前正在使用 ANTLR 并重写生成的 BaseListener 类中的方法。具体来说,我想知道是否可以安全地假设传递给这些重写方法的 ctx(上下文)参数始终为非空。
例如,如果我重写这样的侦听器方法:
@Override
public void enterExpr(MyGrammarParser.ExprContext ctx) {
// Can I assume 'ctx' is always non-null here?
}
是否存在 ctx 可能为 null 的边缘情况(例如某些解析错误或可选规则),或者在调用方法时始终保证它是有效的上下文对象?
是的,你可以。上下文总是被创建的,如果你检查生成的代码,你可以看到上下文在调用相应的监听函数时使用了“this”,所以它一定是存在的!