Antlr4 CommonTokenStream 构造函数

Antlr4 CommonTokenStream Constructor

我从 ANTLR4 文档站点获取了源代码。

    JavaLexer lexer = new JavaLexer(input);
    CommonTokenStream tokens = new CommonTokenStream(lexer);
    JavaParser parser = new JavaParser(tokens);
    JavaParser.CompilationUnitContext tree = parser.compilationUnit();// parse a compilationUnit

但是 新的 CommonTokenStream(词法分析器) 是有问题的。因为 new CommonTokenStream(lexer) 没有构造函数。有构造函数 new CommonTokenStream() 和 new CommonTokenStream(TokenStream) 但互联网上的许多示例都使用该构造函数,就像代码中给出的那样,这是 Antlr4 文档站点的示例。 也没有 JavaParser(CommonTokenStream) 的构造函数。

谢谢

There are constructors new CommonTokenStream() and new CommonTokenStream(TokenStream)

不,CommonTokenStream中有2个构造函数:

  • CommonTokenStream(TokenSource tokenSource)
  • CommonTokenStream(TokenSource tokenSource, int channel)

不是你说的那两个。参见:http://www.antlr.org/api/Java/org/antlr/v4/runtime/CommonTokenStream.html

Because there is no constructor for new CommonTokenStream(lexer).

每个生成的词法分析器都扩展了 ANTLR4 的 Lexer class, which implements TokenSource,所以 new CommonTokenStream(lexer) 就可以了。