如何处理ANTLR访问者的可选语法块?



这个问题可能以前被问过,但我找不到。所以如果你们发现类似的东西,请告诉我。

根据以下规则:

fix_body : ident  binders (annotation)? (':' term)? ':=' fix_body_term;

我有一个可选的注释和一个可选的术语。对应的访客规则如下所示:

public FixBody visitFix_body(coqParser.Fix_bodyContext ctx)

我的问题是我如何知道是否有术语?

有一种方法可以使用ctx.term()来达到项,但是当没有给定项时,此方法是否返回null?还是有完全不同的方法来解决这个问题?由于我正在使用一个大克默拉,我需要一段时间来测试它,否则我会这样做。

那里没有陷阱...

如果术语是可选的,则只需在调用accept(visitor)方法之前对其进行测试

即可。在您的情况下

if(ctx.term() != null) ctx.term().accept(new TermVisitor())

例:

  • 语法中的可选

  • 接受访客前的测试

相关内容

  • 没有找到相关文章

最新更新