2013-11-26 42 views
1

幾個星期前,我開始與ANTLR4合作。我想知道是否有一種方法可以通過詞法分析器忽略匹配的標記,並將CharStream的索引位置重置爲忽略的標記的起始位置,以便可以通過其他規則重新匹配(例如,其他規則一個不同的模式)。如何忽略令牌並重置詞法分析器lookahead索引

非常感謝提前。

+0

也許: {_input.seek(_tokenStartCharIndex);跳躍(); }; –

回答

0

這聽起來頗有幾分像它提出了,但從來沒有完全定義less詞法分析器命令:
#212: A new lexer command: Less

現在,我會在你的詞法分析器覆蓋nextToken命令。

@Override 
public Token nextToken() { 
    while (true) { 
     int mark = input.mark(); 
     try { 
      int startIndex = input.index(); 
      Token token = super.nextToken(); 
      if (token != null && token.getType() == MY_SPECIAL_TYPE) { 
       pushMode(MY_SPECIAL_MODE); 
       input.seek(startIndex); 
       continue; 
      } 

      return token; 
     } 
     finally { 
      input.release(mark); 
     } 
    } 
} 
+0

它的工作原理。我認爲這是一個有趣的想法,請按照鏈接中的建議創建一個詞法分析器命令。非常感謝。 –

相關問題