这个问题可能以前被问过,但我找不到。所以如果你们发现类似的东西,请告诉我。
根据以下规则:
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())
例:
语法中的可选
接受访客前的测试