不推荐使用ANTLRInputStream和ANTLRFileStream,有哪些替代方案?

Ame*_*oli 4 antlr antlr4

如果我使用

ANTLRFileStream antlrFileStream = new ANTLRFileStream("myfile.testlang");
Run Code Online (Sandbox Code Playgroud)

要么

ANTLRInputStream input = new ANTLRInputStream( new FileInputStream("myfile.testlang") );
Run Code Online (Sandbox Code Playgroud)

编译器显示两个类的弃用错误是什么替代?

Ame*_*oli 7

您可以使用CharStream而不是已弃用的类,如下所示.

CharStream codePointCharStream = CharStreams.fromFileName("myfile.testlang");
TESTLANGLexer lexer = new TESTLANGLexer(codePointCharStream);
TESTLANGParser parser = new TESTLANGParser(new CommonTokenStream(lexer));
parser.addParseListener(new TESTLANGEventListener());

// Start parsing
parser.testlangFile(); 
Run Code Online (Sandbox Code Playgroud)

  • 有点不幸的是,这些类(完全没问题)已经在Java目标中被弃用(只有那里,其他目标不这样做).创建新函数`CharStreams.fromFileName()`的原因是因为现在完全支持Unicode.这本可以折叠到现有的类中,但决定不触及它们而是创建一个新的API. (4认同)