1
Я пытаюсь получить Сообщи ошибки от ANTLR, но я запуталсяANTLRErrorListener получить ошибки Сообщ
я заменил стандартный ErrorListener как в этом reference question
public String runAntlr(String sqlFile){
ANTLRErrorListener error = new BaseErrorListener();
ANTLRInputStream input;
try {
input = new ANTLRFileStream(sqlFile);
} catch (Exception e) {
return e.toString();
}
tsqlLexer lexer = new tsqlLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
tsqlParser parser = new tsqlParser(tokens);
parser.removeErrorListeners();
lexer.removeErrorListeners();
parser.addErrorListener(error);
lexer.addErrorListener(error);
ParseTree tree = parser.tsql_file();
new MyTsqlVisitor().visit(tree);
System.out.println(error);
return "Analysis successful";
}
Это был текст в моей консоли после бег:
run:
line 2:16 mismatched input 'as' expecting '.'
line 2:19 no viable alternative at input 'date'
line 5:38 mismatched input 'where' expecting {EXCEPT, INTERSECT, UNION, ')'}
BUILD SUCCESSFUL (total time: 5 seconds)
После добавления ANTLRErrorListener
run:
[email protected]
BUILD SUCCESSFUL (total time: 4 seconds)
Правильно ли я использовал ANTLRErrorListener
?
' error.toString() 'тоже не работает – xNappy
Вы реализовали его вообще? ошибка - это всего лишь экземпляр BaseErrorListener, который генерируется antlr с пустыми методами, если я правильно помню? – cantSleepNow
Я реализовал интерфейс 'ANTLRErrorListener', удалил' ErrorListener' из 'parser' и' lexer' и добавил новый – xNappy