我有一个ANTLR4语法,该语法用于突出显示语法的方法中。当用户更改文本时,该方法将被触发并生成commonTokenStream。当我调用GetTokens()时,我只会得到一些期望的令牌。当我调用Consume()时,我得到了更多但不是全部。如何获得文本中的所有令牌?
AntlrInputStream stream = new AntlrInputStream(_input);
GrammarLexer lexer = new GrammarLexer(stream);
CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
List<IToken> list = commonTokenStream.GetTokens();
答案 0 :(得分:1)
在commonTokenStream.GetTokens()
之前,请先尝试commonTokenStream.Fill()
:
CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
commonTokenStream.Fill();
List<IToken> list = commonTokenStream.GetTokens();