このようなパーサー ルールがあり、どのサブルールが一致したかを知る必要があります。
dt returns [DT v]
: (d1=date t1=time?|t2=time d2=date?)
{if ($d1 == null) // right side matched ... }
;
ANTLR4 エラー メッセージが表示されます。
eg を置くことでこのエラーを取り除くことができます$d1.v
が、NullPointerException
実行時にANTLRで生成されたコードで
if (((DtrContext)_localctx).d1.v != null)
_localctx.d1
null のため、_localtx.d1.v
null ptr を使用します。
この行き詰まりを解決する方法についてのアイデアはありますか?