我从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是有问题的。因为没有新的CommonTokenStream(lexer)的构造函数。有一些构造函数--新的CommonTokenStream()和新的CommonTokenStream(TokenStream) --但是互联网中的许多例子都使用了这个构造函数,就像在代码中给出的那样,这就是Antlr4 Doc的例子。此外,JavaParser(CommonTokenStream)也没有构造函数。
谢谢
发布于 2016-10-05 07:04:16
有新的CommonTokenStream()和新的CommonTokenStream(TokenStream)构造函数
不,在CommonTokenStream中有两个构造函数
CommonTokenStream(TokenSource tokenSource)CommonTokenStream(TokenSource tokenSource, int channel)不是你提到的那两个人。请参阅:http://www.antlr.org/api/Java/org/antlr/v4/runtime/CommonTokenStream.html
因为没有新CommonTokenStream(lexer)的构造函数。
每个生成的lexer都扩展了ANTLR4 4的Lexer类,它实现了TokenSource,所以做new CommonTokenStream(lexer)就很好了。
https://stackoverflow.com/questions/39866405
复制相似问题