我知道您可以使用@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
,在那里添加你的东西并继承这个新类