У меня есть проект на основе antlr4 с классом Main, содержащим этот код:
package com.progur.langtutorial;
import java.io.FileInputStream;
import java.io.IOException;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.CharStreams;
import org.antlr.v4.runtime.CommonTokenStream;
public class Main {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
try {
ANTLRInputStream input = new ANTLRInputStream(
new FileInputStream(args[0]));
GYOOLexer lexer = new GYOOLexer(input);
GYOOParser parser = new GYOOParser(new CommonTokenStream(lexer));
parser.addParseListener(new MyListener());
// Start parsing
parser.program();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Однако, поскольку ANTLRInputStream устарел, мне нужно вместо этого использовать CharStream.Но когда я пытался использовать CharStream, я не мог двигаться дальше, чем
CharStream input = new ANTLRInputStream(
new FileInputStream(args[0]));
Это потому, что я не знаю, как заменить часть выражения после знака '='.Я попытался CharStreams.fromFileName(new FileInputStream(args[0]));
, но затем затмение заявляет эту ошибку «CharStreams.fromFileName не может быть разрешено для типа».Я также пытался CharStreams.fromFileName(args[0]);
с тем же результатом.Я даже попробовал CharStream input = new CharStreams.fromFileName("test");
, где «test» - это программа, написанная для проверки написанного мной синтаксического анализатора языка.Также было то же самое.
У меня также есть другая ошибка в parser.addParseListener(new MyListener());
, где написано MyListener cannot be resolved to a type
.Что бы это могло значить?В каждом уроке, который я смотрел, было случайное имя для «MyListener ()».Каким должно быть правильное утверждение для этого?
Спасибо!