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

时间:2014-06-30 17:39:08

标签: java antlr dsl antlr4

我知道您可以使用@members部分为antlr4解析器定义成员。是否有类似的定义BaseListener / BaseVisitor生成的类的默认实现?默认实现 - 访问者调用visistChildren(),监听器不执行任何操作。

我问的原因是因为我目前正在实现接口的监听器和访问者版本,所以我可以比较性能,他们都将调用转发给一个辅助类,以非常类似的方式执行实际工作:

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

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

如果我能以某种方式在语法文件中指定它,那将是很好的。

谢谢!

1 个答案:

答案 0 :(得分:1)

创建一个继承BaseListener的类,将其称为MyBaseListener,在那里添加你的东西并继承这个新类。