33import graphql .language .Document ;
44import graphql .parser .antlr .GraphqlLexer ;
55import graphql .parser .antlr .GraphqlParser ;
6- import org .antlr .v4 .runtime .ANTLRInputStream ;
7- import org .antlr .v4 .runtime .CommonTokenStream ;
8- import org .antlr .v4 .runtime .DefaultErrorStrategy ;
9- import org .antlr .v4 .runtime .RecognitionException ;
6+ import org .antlr .v4 .runtime .*;
107import org .antlr .v4 .runtime .atn .PredictionMode ;
8+ import org .slf4j .Logger ;
9+ import org .slf4j .LoggerFactory ;
1110
1211public class Parser {
1312
13+ private static final Logger log = LoggerFactory .getLogger (Parser .class );
14+
1415
1516 public Document parseDocument (String input ) {
1617
@@ -19,6 +20,8 @@ public Document parseDocument(String input) {
1920 CommonTokenStream tokens = new CommonTokenStream (lexer );
2021
2122 GraphqlParser parser = new GraphqlParser (tokens );
23+ parser .removeErrorListeners ();
24+ parser .addErrorListener (new ErrorListener ());
2225 parser .getInterpreter ().setPredictionMode (PredictionMode .SLL );
2326 parser .setErrorHandler (new ErrorStrategy ());
2427 GraphqlParser .DocumentContext document = parser .document ();
@@ -37,4 +40,11 @@ public void recover(org.antlr.v4.runtime.Parser recognizer, RecognitionException
3740 }
3841 }
3942
43+ private class ErrorListener extends BaseErrorListener {
44+ @ Override
45+ public void syntaxError (Recognizer <?, ?> recognizer , Object offendingSymbol , int line , int charPositionInLine , String msg , RecognitionException e ) {
46+ log .error ("graphql syntax error: line " + line + ":" + charPositionInLine + " " + msg );
47+ }
48+ }
49+
4050}
0 commit comments