ANTLR4 commonTokenStream.GetTokens()不能获取所有令牌

时间:2019-01-10 15:49:15

标签: c# antlr antlr4

我有一个ANTLR4语法,该语法用于突出显示语法的方法中。当用户更改文本时,该方法将被触发并生成commonTokenStream。当我调用GetTokens()时,我只会得到一些期望的令牌。当我调用Consume()时,我得到了更多但不是全部。如何获得文本中的所有令牌?

AntlrInputStream stream = new AntlrInputStream(_input);
GrammarLexer lexer = new GrammarLexer(stream);
CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
List<IToken> list = commonTokenStream.GetTokens();

1 个答案:

答案 0 :(得分:1)

commonTokenStream.GetTokens()之前,请先尝试commonTokenStream.Fill()

CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
commonTokenStream.Fill();
List<IToken> list = commonTokenStream.GetTokens();