0

このようなパーサー ルールがあり、どのサブルールが一致したかを知る必要があります。

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.d1null のため、_localtx.d1.vnull ptr を使用します。

この行き詰まりを解決する方法についてのアイデアはありますか?

4

1 に答える 1

0

d1(タイプ の解析ツリー ノード)のコンテキスト オブジェクトは、DateContextで参照できます$d1.ctx$d1これは、単独で行うと想定していたものと同等です。

于 2013-07-25T17:45:16.240 に答える