2016-10-05 144 views
1

我从ANTLR4 Doc站点获取了源代码。Antlr4 CommonTokenStream构造函数

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

但 新CommonTokenStream(词法分析器) 是有问题的。因为没有新的CommonTokenStream(词法分析器)的构造函数。有构造函数新的CommonTokenStream()和新的CommonTokenStream(TokenStream),但在互联网上的很多例子使用Antlr4 Doc站点示例的代码中给出的构造函数。 也没有JavaParser(CommonTokenStream)的构造函数。

感谢

+0

你确定你的解析器/词法分析器生成成功吗? – anion

回答

0

有构造新CommonTokenStream()和新CommonTokenStream(的TokenStream)

没有,有2个构造在CommonTokenStream

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

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

因为没有新的CommonTokenStream(词法分析器)的构造函数。

每天产生的词法扩展ANTLR4的Lexer类,它实现TokenSource,这样new CommonTokenStream(lexer)会就好了。

+0

谢谢,你是对的。但我忘了: 'import org.antlr.v4.runtime.CommonTokenStream'。对不起 – Alperen

+0

其实,这是一个混乱。因为我没有'import org.antlr.runtime。*;'和eclipse自动向我显示CommonTokenStream()。但是v4错过了。 – Alperen

+0

啊,你的classpath中有旧的类,这就解释了它。很高兴听到你正在运行! –