1- import { CommonTokenStream , ANTLRInputStream , Parser } from "antlr4ts" ;
1+ import { CommonTokenStream , ANTLRInputStream , Parser , ANTLRErrorListener , ConsoleErrorListener , Lexer } from "antlr4ts" ;
22import { ParseTree } from "antlr4ts/tree/ParseTree" ;
33import { CaseChangingStream } from "./models/CaseChangingStream" ;
44import { SQLDialect } from "./models/SQLDialect" ;
@@ -19,10 +19,10 @@ export class antlr4tsSQL {
1919 this . dialect = dialect ;
2020 }
2121
22- getTokens ( sqlScript : string ) : CommonTokenStream {
22+ getTokens ( sqlScript : string , errorListeners ?: ANTLRErrorListener < any > [ ] ) : CommonTokenStream {
2323 const chars = new ANTLRInputStream ( sqlScript ) ;
2424 const caseChangingCharStream = new CaseChangingStream ( chars , true ) ;
25- let lexer = null ;
25+ let lexer : Lexer = null ;
2626 if ( this . dialect === SQLDialect . TSQL ) {
2727 lexer = new TSqlLexer ( caseChangingCharStream ) ;
2828 } else if ( this . dialect === SQLDialect . PLSQL ) {
@@ -32,12 +32,18 @@ export class antlr4tsSQL {
3232 } else if ( this . dialect === SQLDialect . MYSQL ) {
3333 lexer = new MySQLLexer ( chars ) ;
3434 }
35+ if ( errorListeners !== null && errorListeners !== undefined ) {
36+ lexer . removeErrorListener ( ConsoleErrorListener . INSTANCE ) ;
37+ for ( const listener of errorListeners ) {
38+ lexer . addErrorListener ( listener ) ;
39+ }
40+ }
3541 const tokens = new CommonTokenStream ( lexer ) ;
3642 return tokens ;
3743 }
3844
39- getParser ( tokens : CommonTokenStream ) : Parser {
40- let parser = null ;
45+ getParser ( tokens : CommonTokenStream , errorListeners ?: ANTLRErrorListener < any > [ ] ) : Parser {
46+ let parser : Parser = null ;
4147 if ( this . dialect === SQLDialect . TSQL ) {
4248 parser = new TSqlParser ( tokens ) ;
4349 } else if ( this . dialect === SQLDialect . PLSQL ) {
@@ -47,6 +53,12 @@ export class antlr4tsSQL {
4753 } else if ( this . dialect === SQLDialect . MYSQL ) {
4854 parser = new MultiQueryMySQLParser ( tokens ) ;
4955 }
56+ if ( errorListeners !== null && errorListeners !== undefined ) {
57+ parser . removeErrorListener ( ConsoleErrorListener . INSTANCE ) ;
58+ for ( const listener of errorListeners ) {
59+ parser . addErrorListener ( listener ) ;
60+ }
61+ }
5062 return parser ;
5163 }
5264
0 commit comments