我有一个这样的解析器规则,我需要知道哪个子规则匹配:
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
使用空指针。
关于如何解决这种僵局的任何想法?