У меня есть грамматика для оценки файлов CSV, и она работает правильно в соответствии с TestRig. Создается следующее дерево разбора:
Если, однако, я использую следующий код java в своем приложении, синтаксический анализ завершается с ошибкой:
line 2:33 no viable alternative at input '=A2+B2+C1'
Обновление: сейчас я использую поток Char непосредственно из файла, но ошибка все еще остается.
private static void parseFile(String fileName) throws IOException {
CSVLexer lexer = new CSVLexer(CharStreams.fromFileName("test.csv", StandardCharsets.UTF_8));
CSVParser parser = new CSVParser(new CommonTokenStream(lexer));
ParseTree tree = parser.start(); //start is the start rule
}
Насколько я понимаю, TestRig делает то же самое, поэтому как это может быть успешным, и этот сбой?
Вот test.csv
, который я использую для проверки:
12;=35.5+6*2;=A1+B1
"szoveg";"masik szoveg";=A2+B2+C1
Что касается того, как я вызываю TestRig, я использую командную строку:
java -cp path\to\antln\jar org.antlr.v4.gui.TestRig CSV start -gui
ОБНОВЛЕНИЕ: при использовании
java -cp path\to\antln\jar org.antlr.v4.gui.TestRig CSV start -gui test.csv
я получаю ту же ошибку.