可能这个问题以前曾被问过,但我找不到。因此,如果你们发现类似的东西,请告诉我。
根据以下规则:
fix_body : ident binders (annotation)? (':' term)? ':=' fix_body_term;
我有一个可选的注释和一个可选的术语。相应的visitorRule如下所示:
public FixBody visitFix_body(coqParser.Fix_bodyContext ctx)
我的问题是,如果有术语,我该如何查找?
有一种使用ctx.term()
来达到条件的方法,但是当没有给出条件时,该方法是否返回null
?还是有完全不同的方法来解决这个问题?由于我正在使用大型语法分析器,因此需要一段时间才能对其进行测试,否则我会这样做。
答案 0 :(得分:1)
那里没有陷阱...
如果该术语是可选的,则只需在调用accept(visitor)
方法之前对其进行测试
以您的情况
if(ctx.term() != null) ctx.term().accept(new TermVisitor())
示例: