0
我有這樣的解析器規則,我需要知道哪些子規則匹配:ANTLR4:錯誤,當我試圖找到其中解析器子規則匹配
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
爲空,所以_localtx.d1.v
使用一個空PTR。
有關我如何解決這個問題的任何想法?
謝謝,無視旁路。我看到ANTLR生成的代碼將($ d1.ctx == null)轉換爲(d == null),所以我想知道是什麼阻止了我對語法的假設,從而成爲語法? –