我正在使用ANTLR 4.7。ANTLR4:是否可以匹配一段不跟隨令牌的內容?
輸入如下:
[section a]
bla bla bla
[section b] <<<<<<< to ignore
bla bla bla <<<<<<< to ignore
[section c]
bla bla bla
如何igonre在[section b]
的全部內容?
目前,我使用的是詞法規則如下圖所示:
Section_Igonre : '[section b]' (~'[')* ->skip;
我使用[
作爲下一章節開始的一個指標。所以忽略應該停止在那裏。
但是,如果b部分內容包含[
,恐怕不是那麼可靠。所以我想先使用一個標記來匹配節標記。然後使用該標記作爲停止忽略的指標。
SectionTag : '[' [a-zA-Z]+ ']';
這可能嗎?下面我嘗試,但ANTLR拒絕了:
Section_Igonre : '[section b]' (~SectionTag)* ->skip;
錯誤說:
嚴重性: '錯誤' 的消息: '規則參考SectionTag目前不 一組支持'
的問題是,我只是想找到一種方式來跳過任意章節給出的部分名稱。所以我不需要弄清楚他們每個人的語法。有這麼多,每個部分是如此不同。如果我可以跳過它們,我可以節省內存佔用。 – smwikipedia
也許預處理您的輸入並移除您不感興趣的所有內容(假設您有一對易於查找的獨特分隔符)。然後將此過濾過程的結果提供給解析器。 –
@MikeLischke謝謝。 Thant是一種選擇。如果我沒有其他選擇。我會嘗試。 – smwikipedia