如果我使用
ANTLRFileStream antlrFileStream = new ANTLRFileStream("myfile.testlang");
或
ANTLRInputStream input = new ANTLRInputStream( new FileInputStream("myfile.testlang") );
编译器显示两个类的弃用错误是什么替代?
答案 0 :(得分:6)
您可以使用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();
答案 1 :(得分:0)
对于@Mike Lischke的评论,不幸的是Unicode支持并没有简单地折叠到现有的ANTLRInputStream中,而不是创建了新的CharStreams类(并且破坏了现有代码,尽管(通常是?)?) -fix way“:难道是因为ANTLRInputStream是非Unicode流而写了一些代码(例如,仅8或16位字符)?
我是ANTLR的新手(十年前在CS课上学习了生锈的Java。),所以我不知道对ANTLRInputStream的 incomplete Unicode支持有多少?
“不要将旧界面折叠为新行为,只创建一个新界面”让我想起了看起来像源代码恒定状态的Apple Swift(以及它们的Cocoa / iOS / etc API)兼容性通量。