ANTLR4:当我试图找到匹配的解析器子规则时出错

  • 本文关键字:出错 规则 ANTLR4 antlr antlr4
  • 更新时间 :
  • 英文 :


我有一个这样的解析器规则,我需要知道匹配哪个子规则:

dt returns [DT v]
:    (d1=date t1=time?|t2=time d2=date?)
                 {if ($d1 == null) // right side matched ... }
;

我收到一条ANTLR4错误消息:"对'$d1'中的规则引用'd1'缺少属性访问"。

我可以通过放入例如$d1.v来消除这个错误,但在的ANTLR生成的代码中,我在运行时得到了NullPointerException

if (((DtrContext)_localctx).d1.v != null)

因为_localctx.d1为null,所以_localtx.d1.v使用null ptr。

关于我如何解决这个僵局,有什么想法吗?

d1的上下文对象(类型为DateContext的解析树节点)可以用$d1.ctx引用。这相当于您假设单独使用$d1即可完成的操作。

相关内容

  • 没有找到相关文章

最新更新