如何使用 ANTLR-Visitor 处理可选语法块?
How to handle Optional Grammar Blocks with a ANTLR-Visitor?
可能这个问题以前有人问过,但我找不到了。所以如果你们发现类似的东西,请告诉我。
根据以下规则:
fix_body : ident binders (annotation)? (':' term)? ':=' fix_body_term;
我有一个可选的注释和一个可选的术语。相应的 visitorRule 如下所示:
public FixBody visitFix_body(coqParser.Fix_bodyContext ctx)
我的问题是如何知道是否有术语?
有一种方法可以使用ctx.term()
达到术语,但是当没有给出术语时,这种方法是否return null
?还是有一种完全不同的方法来解决这个问题?由于我正在使用大语法,因此我需要一段时间来测试它,否则我会那样做。
那里没有陷阱...
如果这个词是可选的,你只需要在调用accept(visitor)
方法之前测试它
你的情况
if(ctx.term() != null) ctx.term().accept(new TermVisitor())
示例:
可能这个问题以前有人问过,但我找不到了。所以如果你们发现类似的东西,请告诉我。
根据以下规则:
fix_body : ident binders (annotation)? (':' term)? ':=' fix_body_term;
我有一个可选的注释和一个可选的术语。相应的 visitorRule 如下所示:
public FixBody visitFix_body(coqParser.Fix_bodyContext ctx)
我的问题是如何知道是否有术语?
有一种方法可以使用ctx.term()
达到术语,但是当没有给出术语时,这种方法是否return null
?还是有一种完全不同的方法来解决这个问题?由于我正在使用大语法,因此我需要一段时间来测试它,否则我会那样做。
那里没有陷阱...
如果这个词是可选的,你只需要在调用accept(visitor)
方法之前测试它
你的情况
if(ctx.term() != null) ctx.term().accept(new TermVisitor())
示例: