我有一个像这样的解析器规则,我需要知道哪个子规则匹配:
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。
关于如何解决这个问题的任何想法?
答案 0 :(得分:0)
d1
的上下文对象(DateContext
类型的解析树节点)可以使用$d1.ctx
引用。这相当于你单独假设的$d1
。