使用antlr指定基本侦听器/访问器实现



我知道您可以使用@members部分为antlr4解析器定义成员。对于定义BaseListener/BaseVisitor生成的类的默认实现是否有类似的东西?默认的实现是:对于访问者调用visistChildren(),对于侦听器什么都不做。

我问的原因是因为我目前正在实现接口的侦听器和访问者版本,所以我可以比较性能,它们都将调用转发给一个以非常样板的方式完成实际工作的helper类:

@Override
public Boolean visitExpression1(@NotNull FilterParser.Expression1Context ctx) {
    return evaluationHandler.eval(ctx);
}
@Override
public Boolean visitExpression2(@NotNull FilterParser.Expression2Context ctx) {
    return evaluationHandler.eval(ctx);
}
...

如果我能以某种方式在语法文件中指定它就好了。

谢谢!

创建一个继承BaseListener的类,命名为MyBaseListener,在那里添加你的东西并继承这个新类

相关内容

  • 没有找到相关文章

最新更新