0

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

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

我收到一条 ANTLR4 错误消息:“‘$d1’中的规则引用‘d1’缺少属性访问”。

我可以通过输入 eg 来摆脱这个错误$d1.v,但是我NullPointerException在运行时在 ANTLR 生成的代码中得到一个

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

因为_localctx.d1是空的,所以_localtx.d1.v使用空指针。

关于如何解决这种僵局的任何想法?

4

1 回答 1

0

d1(类型为 的分析树节点)的上下文对象DateContext可以用 来引用$d1.ctx。这相当于您假设$d1单独会做的事情。

于 2013-07-25T17:45:16.240 回答