dt-sql-parser 4.0.0-beta.4.1 → 4.0.0-beta.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +124 -43
  2. package/dist/index.d.ts +5 -5
  3. package/dist/index.js +4 -4
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/flinksql/FlinkSqlLexer.d.ts +202 -201
  6. package/dist/lib/flinksql/FlinkSqlLexer.js +2003 -1996
  7. package/dist/lib/flinksql/FlinkSqlLexer.js.map +1 -1
  8. package/dist/lib/flinksql/FlinkSqlParser.d.ts +328 -265
  9. package/dist/lib/flinksql/FlinkSqlParser.js +3712 -3076
  10. package/dist/lib/flinksql/FlinkSqlParser.js.map +1 -1
  11. package/dist/lib/flinksql/FlinkSqlParserListener.d.ts +44 -0
  12. package/dist/lib/flinksql/FlinkSqlParserVisitor.d.ts +28 -0
  13. package/dist/lib/hive/HiveSqlLexer.d.ts +365 -351
  14. package/dist/lib/hive/HiveSqlLexer.js +2494 -2457
  15. package/dist/lib/hive/HiveSqlLexer.js.map +1 -1
  16. package/dist/lib/hive/{HiveSql.d.ts → HiveSqlParser.d.ts} +2791 -2463
  17. package/dist/lib/hive/{HiveSql.js → HiveSqlParser.js} +18554 -16800
  18. package/dist/lib/hive/HiveSqlParser.js.map +1 -0
  19. package/dist/lib/hive/{HiveSqlListener.d.ts → HiveSqlParserListener.d.ts} +1759 -1517
  20. package/dist/lib/hive/HiveSqlParserListener.js +3 -0
  21. package/dist/lib/hive/HiveSqlParserListener.js.map +1 -0
  22. package/dist/lib/hive/{HiveSqlVisitor.d.ts → HiveSqlParserVisitor.d.ts} +1165 -1011
  23. package/dist/lib/hive/HiveSqlParserVisitor.js +3 -0
  24. package/dist/lib/hive/HiveSqlParserVisitor.js.map +1 -0
  25. package/dist/lib/pgsql/PostgreSQLLexerBase.js +0 -4
  26. package/dist/lib/pgsql/PostgreSQLLexerBase.js.map +1 -1
  27. package/dist/lib/pgsql/PostgreSQLParserBase.js +0 -6
  28. package/dist/lib/pgsql/PostgreSQLParserBase.js.map +1 -1
  29. package/dist/lib/spark/SparkSqlLexer.d.ts +398 -322
  30. package/dist/lib/spark/SparkSqlLexer.js +2302 -1738
  31. package/dist/lib/spark/SparkSqlLexer.js.map +1 -1
  32. package/dist/lib/spark/SparkSqlParser.d.ts +3319 -3314
  33. package/dist/lib/spark/SparkSqlParser.js +18718 -16132
  34. package/dist/lib/spark/SparkSqlParser.js.map +1 -1
  35. package/dist/lib/spark/SparkSqlParserListener.d.ts +2130 -0
  36. package/dist/lib/spark/SparkSqlParserListener.js +3 -0
  37. package/dist/lib/spark/SparkSqlParserListener.js.map +1 -0
  38. package/dist/lib/spark/SparkSqlParserVisitor.d.ts +1361 -0
  39. package/dist/lib/spark/SparkSqlParserVisitor.js +3 -0
  40. package/dist/lib/spark/SparkSqlParserVisitor.js.map +1 -0
  41. package/dist/parser/common/basic-parser-types.d.ts +16 -3
  42. package/dist/parser/common/basic-parser-types.js +12 -2
  43. package/dist/parser/common/basic-parser-types.js.map +1 -1
  44. package/dist/parser/common/basicParser.d.ts +27 -28
  45. package/dist/parser/common/basicParser.js +76 -60
  46. package/dist/parser/common/basicParser.js.map +1 -1
  47. package/dist/parser/common/parseErrorListener.d.ts +33 -0
  48. package/dist/parser/common/parseErrorListener.js +28 -0
  49. package/dist/parser/common/parseErrorListener.js.map +1 -0
  50. package/dist/parser/flinksql.d.ts +1 -1
  51. package/dist/parser/flinksql.js +32 -13
  52. package/dist/parser/flinksql.js.map +1 -1
  53. package/dist/parser/generic.js +1 -1
  54. package/dist/parser/generic.js.map +1 -1
  55. package/dist/parser/hive.d.ts +12 -5
  56. package/dist/parser/hive.js +91 -7
  57. package/dist/parser/hive.js.map +1 -1
  58. package/dist/parser/index.d.ts +1 -0
  59. package/dist/parser/index.js +1 -0
  60. package/dist/parser/index.js.map +1 -1
  61. package/dist/parser/pgsql.js +1 -1
  62. package/dist/parser/pgsql.js.map +1 -1
  63. package/dist/parser/plsql.js +1 -1
  64. package/dist/parser/plsql.js.map +1 -1
  65. package/dist/parser/spark.d.ts +10 -3
  66. package/dist/parser/spark.js +90 -7
  67. package/dist/parser/spark.js.map +1 -1
  68. package/dist/parser/trinosql.js +1 -1
  69. package/dist/parser/trinosql.js.map +1 -1
  70. package/dist/utils/findCaretTokenIndex.d.ts +2 -2
  71. package/dist/utils/findCaretTokenIndex.js +5 -4
  72. package/dist/utils/findCaretTokenIndex.js.map +1 -1
  73. package/dist/utils/index.d.ts +1 -1
  74. package/dist/utils/index.js +1 -5
  75. package/dist/utils/index.js.map +1 -1
  76. package/dist/utils/token.d.ts +2 -2
  77. package/dist/utils/token.js +2 -2
  78. package/dist/utils/token.js.map +1 -1
  79. package/package.json +16 -9
  80. package/dist/lib/hive/HiveSql.js.map +0 -1
  81. package/dist/lib/hive/HiveSqlListener.js +0 -3
  82. package/dist/lib/hive/HiveSqlListener.js.map +0 -1
  83. package/dist/lib/hive/HiveSqlVisitor.js +0 -3
  84. package/dist/lib/hive/HiveSqlVisitor.js.map +0 -1
  85. package/dist/lib/spark/SparkSqlListener.d.ts +0 -3516
  86. package/dist/lib/spark/SparkSqlListener.js +0 -3
  87. package/dist/lib/spark/SparkSqlListener.js.map +0 -1
  88. package/dist/lib/spark/SparkSqlVisitor.d.ts +0 -2201
  89. package/dist/lib/spark/SparkSqlVisitor.js +0 -3
  90. package/dist/lib/spark/SparkSqlVisitor.js.map +0 -1
  91. package/dist/parser/common/parserErrorListener.d.ts +0 -30
  92. package/dist/parser/common/parserErrorListener.js +0 -62
  93. package/dist/parser/common/parserErrorListener.js.map +0 -1
@@ -0,0 +1,3 @@
1
+ // Generated from /Users/liuyi/Desktop/Projects/dtstack/dt-sql-parser/src/grammar/spark/SparkSqlParser.g4 by ANTLR 4.9.0-SNAPSHOT
2
+ export {};
3
+ //# sourceMappingURL=SparkSqlParserVisitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SparkSqlParserVisitor.js","sourceRoot":"","sources":["../../../src/lib/spark/SparkSqlParserVisitor.ts"],"names":[],"mappings":"AAAA,iIAAiI"}
@@ -14,14 +14,24 @@ export interface CaretPosition {
14
14
  export declare enum SyntaxContextType {
15
15
  /** catalog name */
16
16
  CATALOG = "catalog",
17
+ /** catalog name that will be created */
18
+ CATALOG_CREATE = "catalogCreate",
17
19
  /** database name path, such as catalog.db */
18
20
  DATABASE = "database",
19
- /** database name path will be created */
21
+ /** database name path that will be created */
20
22
  DATABASE_CREATE = "databaseCreate",
21
23
  /** table name path, such as catalog.db.tb */
22
24
  TABLE = "table",
23
- /** table name path will be created */
24
- TABLE_CREATE = "tableCreate"
25
+ /** table name path that will be created */
26
+ TABLE_CREATE = "tableCreate",
27
+ /** view name path, such as db.tb.view */
28
+ VIEW = "view",
29
+ /** view name path that will be created */
30
+ VIEW_CREATE = "viewCreate",
31
+ /** function name */
32
+ FUNCTION = "function",
33
+ /** function name that will be created */
34
+ FUNCTION_CREATE = "functionCreate"
25
35
  }
26
36
  export interface WordRange {
27
37
  /** content of word */
@@ -56,10 +66,13 @@ export interface Suggestions<T = WordRange> {
56
66
  keywords: string[];
57
67
  }
58
68
  export interface TextSlice {
69
+ /** start at 0 */
59
70
  startIndex: number;
60
71
  endIndex: number;
72
+ /** start at 1 */
61
73
  startLine: number;
62
74
  endLine: number;
75
+ /** start at 1 */
63
76
  startColumn: number;
64
77
  endColumn: number;
65
78
  text: string;
@@ -5,13 +5,23 @@ export var SyntaxContextType;
5
5
  (function (SyntaxContextType) {
6
6
  /** catalog name */
7
7
  SyntaxContextType["CATALOG"] = "catalog";
8
+ /** catalog name that will be created */
9
+ SyntaxContextType["CATALOG_CREATE"] = "catalogCreate";
8
10
  /** database name path, such as catalog.db */
9
11
  SyntaxContextType["DATABASE"] = "database";
10
- /** database name path will be created */
12
+ /** database name path that will be created */
11
13
  SyntaxContextType["DATABASE_CREATE"] = "databaseCreate";
12
14
  /** table name path, such as catalog.db.tb */
13
15
  SyntaxContextType["TABLE"] = "table";
14
- /** table name path will be created */
16
+ /** table name path that will be created */
15
17
  SyntaxContextType["TABLE_CREATE"] = "tableCreate";
18
+ /** view name path, such as db.tb.view */
19
+ SyntaxContextType["VIEW"] = "view";
20
+ /** view name path that will be created */
21
+ SyntaxContextType["VIEW_CREATE"] = "viewCreate";
22
+ /** function name */
23
+ SyntaxContextType["FUNCTION"] = "function";
24
+ /** function name that will be created */
25
+ SyntaxContextType["FUNCTION_CREATE"] = "functionCreate";
16
26
  })(SyntaxContextType || (SyntaxContextType = {}));
17
27
  //# sourceMappingURL=basic-parser-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"basic-parser-types.js","sourceRoot":"","sources":["../../../src/parser/common/basic-parser-types.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,CAAN,IAAY,iBAWX;AAXD,WAAY,iBAAiB;IACzB,mBAAmB;IACnB,wCAAmB,CAAA;IACnB,6CAA6C;IAC7C,0CAAqB,CAAA;IACrB,0CAA0C;IAC1C,uDAAkC,CAAA;IAClC,6CAA6C;IAC7C,oCAAe,CAAA;IACf,sCAAsC;IACtC,iDAA4B,CAAA;AAChC,CAAC,EAXW,iBAAiB,KAAjB,iBAAiB,QAW5B"}
1
+ {"version":3,"file":"basic-parser-types.js","sourceRoot":"","sources":["../../../src/parser/common/basic-parser-types.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,CAAN,IAAY,iBAqBX;AArBD,WAAY,iBAAiB;IACzB,mBAAmB;IACnB,wCAAmB,CAAA;IACnB,yCAAyC;IACzC,qDAAgC,CAAA;IAChC,6CAA6C;IAC7C,0CAAqB,CAAA;IACrB,+CAA+C;IAC/C,uDAAkC,CAAA;IAClC,6CAA6C;IAC7C,oCAAe,CAAA;IACf,2CAA2C;IAC3C,iDAA4B,CAAA;IAC5B,yCAAyC;IACzC,kCAAa,CAAA;IACb,0CAA0C;IAC1C,+CAA0B,CAAA;IAC1B,oBAAoB;IACpB,0CAAqB,CAAA;IACrB,yCAAyC;IACzC,uDAAkC,CAAA;AACtC,CAAC,EArBW,iBAAiB,KAAjB,iBAAiB,QAqB5B"}
@@ -2,7 +2,7 @@ import { Parser, Lexer, Token, CommonTokenStream, CodePointCharStream, ParserRul
2
2
  import { ParseTreeListener } from 'antlr4ts/tree';
3
3
  import { CandidatesCollection } from 'antlr4-c3';
4
4
  import { CaretPosition, Suggestions, TextSlice } from './basic-parser-types';
5
- import { ParserError, ErrorHandler, ParserErrorCollector } from './parserErrorListener';
5
+ import { ParseError, ErrorHandler } from './parseErrorListener';
6
6
  interface IParser<IParserRuleContext extends ParserRuleContext> extends Parser {
7
7
  program(): IParserRuleContext;
8
8
  }
@@ -13,19 +13,22 @@ interface SplitListener extends ParseTreeListener {
13
13
  * Custom Parser class, subclass needs extends it.
14
14
  */
15
15
  export default abstract class BasicParser<L extends Lexer = Lexer, PRC extends ParserRuleContext = ParserRuleContext, P extends IParser<PRC> = IParser<PRC>> {
16
+ /** members for cache start */
16
17
  protected _charStreams: CodePointCharStream;
17
18
  protected _lexer: L;
18
19
  protected _tokenStream: CommonTokenStream;
19
20
  protected _parser: P;
20
- protected _parserTree: PRC;
21
- protected _errorCollector: ParserErrorCollector;
21
+ protected _parseTree: PRC;
22
22
  protected _parsedInput: string;
23
+ protected _parseErrors: ParseError[];
24
+ /** members for cache end */
25
+ private _errorHandler;
23
26
  /**
24
27
  * PreferredRules for antlr4-c3
25
28
  */
26
29
  protected abstract preferredRules: Set<number>;
27
30
  /**
28
- * Create a antrl4 Lexer instance
31
+ * Create a antlr4 Lexer instance.
29
32
  * @param input source string
30
33
  */
31
34
  protected abstract createLexerFormCharStream(charStreams: CodePointCharStream): L;
@@ -39,8 +42,7 @@ export default abstract class BasicParser<L extends Lexer = Lexer, PRC extends P
39
42
  * @param candidates candidate list
40
43
  * @param allTokens all tokens from input
41
44
  * @param caretTokenIndex tokenIndex of caretPosition
42
- * @param tokenIndexOffset offset of the tokenIndex in the candidates
43
- * compared to the tokenIndex in allTokens
45
+ * @param tokenIndexOffset offset of the tokenIndex in the candidates compared to the tokenIndex in allTokens
44
46
  */
45
47
  protected abstract processCandidates(candidates: CandidatesCollection, allTokens: Token[], caretTokenIndex: number, tokenIndexOffset: number): Suggestions<Token>;
46
48
  /**
@@ -48,57 +50,54 @@ export default abstract class BasicParser<L extends Lexer = Lexer, PRC extends P
48
50
  */
49
51
  protected abstract get splitListener(): SplitListener;
50
52
  /**
51
- * Create an anltr4 lexer from input.
53
+ * Create an antlr4 lexer from input.
52
54
  * @param input string
53
55
  */
54
- createLexer(input: string): L;
56
+ createLexer(input: string, errorListener?: ErrorHandler<any>): L;
55
57
  /**
56
- * Create an anltr4 parser from input.
58
+ * Create an antlr4 parser from input.
57
59
  * @param input string
58
60
  */
59
- createParser(input: string): P;
61
+ createParser(input: string, errorListener?: ErrorHandler<any>): P;
60
62
  /**
61
- * Create an anltr4 parser from input.
63
+ * Parse input string and return parseTree.
64
+ * @param input string
65
+ * @param errorListener listen parse errors and lexer errors.
66
+ * @returns parseTree
67
+ */
68
+ parse(input: string, errorListener?: ErrorHandler<any>): PRC;
69
+ /**
70
+ * Create an antlr4 parser from input.
62
71
  * And the instances will be cache.
63
72
  * @param input string
64
73
  */
65
- protected createParserWithCache(input: string): P;
74
+ private createParserWithCache;
66
75
  /**
67
76
  * If it is invoked multiple times in a row and the input parameters is the same,
68
77
  * this method returns the parsing result directly for the first time
69
78
  * unless the errorListener parameter is passed.
70
79
  * @param input source string
71
80
  * @param errorListener listen errors
72
- * @returns parserTree
81
+ * @returns parseTree
73
82
  */
74
- parse(input: string, errorListener?: ErrorHandler<any>): PRC;
83
+ private parseWithCache;
75
84
  /**
76
85
  * Validate input string and return syntax errors if exists.
77
86
  * @param input source string
78
87
  * @returns syntax errors
79
88
  */
80
- validate(input: string): ParserError[];
89
+ validate(input: string): ParseError[];
81
90
  /**
82
- * Get all Tokens of input string,'<EOF>' is not included
91
+ * Get all Tokens of input string,'<EOF>' is not included.
83
92
  * @param input source string
84
93
  * @returns Token[]
85
94
  */
86
95
  getAllTokens(input: string): Token[];
87
- /**
88
- * It convert tree to string, it's convenient to use in unit test.
89
- * @param string input
90
- */
91
- parserTreeToString(input: string): string;
92
- /**
93
- * Get List-like style tree string
94
- * @param parserTree ProgramRuleContext
95
- */
96
- toString(parserTree: PRC): string;
97
96
  /**
98
97
  * @param listener Listener instance extends ParserListener
99
- * @param parserTree parser Tree
98
+ * @param parseTree parser Tree
100
99
  */
101
- listen<PTL extends ParseTreeListener = ParseTreeListener>(listener: PTL, parserTree: PRC): void;
100
+ listen<PTL extends ParseTreeListener = ParseTreeListener>(listener: PTL, parseTree: PRC): void;
102
101
  /**
103
102
  * Split input into statements.
104
103
  * If exist syntax error it will return null.
@@ -1,45 +1,75 @@
1
- import { CharStreams, CommonTokenStream } from 'antlr4ts';
1
+ import { CharStreams, CommonTokenStream, } from 'antlr4ts';
2
2
  import { ParseTreeWalker } from 'antlr4ts/tree';
3
3
  import { CodeCompletionCore } from 'antlr4-c3';
4
4
  import { findCaretTokenIndex } from '../../utils/findCaretTokenIndex';
5
- import ParserErrorListener, { ParserErrorCollector, } from './parserErrorListener';
5
+ import ParseErrorListener from './parseErrorListener';
6
6
  /**
7
7
  * Custom Parser class, subclass needs extends it.
8
8
  */
9
9
  export default class BasicParser {
10
10
  constructor() {
11
- this._errorCollector = new ParserErrorCollector();
12
11
  this._parsedInput = null;
12
+ this._parseErrors = [];
13
+ /** members for cache end */
14
+ this._errorHandler = (error) => {
15
+ this._parseErrors.push(error);
16
+ };
13
17
  }
14
18
  /**
15
- * Create an anltr4 lexer from input.
19
+ * Create an antlr4 lexer from input.
16
20
  * @param input string
17
21
  */
18
- createLexer(input) {
22
+ createLexer(input, errorListener) {
19
23
  const charStreams = CharStreams.fromString(input.toUpperCase());
20
24
  const lexer = this.createLexerFormCharStream(charStreams);
25
+ if (errorListener) {
26
+ lexer.removeErrorListeners();
27
+ lexer.addErrorListener(new ParseErrorListener(errorListener));
28
+ }
21
29
  return lexer;
22
30
  }
23
31
  /**
24
- * Create an anltr4 parser from input.
32
+ * Create an antlr4 parser from input.
25
33
  * @param input string
26
34
  */
27
- createParser(input) {
28
- const lexer = this.createLexer(input);
35
+ createParser(input, errorListener) {
36
+ const lexer = this.createLexer(input, errorListener);
29
37
  const tokenStream = new CommonTokenStream(lexer);
30
38
  const parser = this.createParserFromTokenStream(tokenStream);
39
+ if (errorListener) {
40
+ parser.removeErrorListeners();
41
+ parser.addErrorListener(new ParseErrorListener(errorListener));
42
+ }
31
43
  return parser;
32
44
  }
33
45
  /**
34
- * Create an anltr4 parser from input.
46
+ * Parse input string and return parseTree.
47
+ * @param input string
48
+ * @param errorListener listen parse errors and lexer errors.
49
+ * @returns parseTree
50
+ */
51
+ parse(input, errorListener) {
52
+ const parser = this.createParser(input, errorListener);
53
+ parser.buildParseTree = true;
54
+ return parser.program();
55
+ }
56
+ /**
57
+ * Create an antlr4 parser from input.
35
58
  * And the instances will be cache.
36
59
  * @param input string
37
60
  */
38
61
  createParserWithCache(input) {
39
- this._parserTree = null;
62
+ this._parseTree = null;
40
63
  this._charStreams = CharStreams.fromString(input.toUpperCase());
41
64
  this._lexer = this.createLexerFormCharStream(this._charStreams);
65
+ this._lexer.removeErrorListeners();
66
+ this._lexer.addErrorListener(new ParseErrorListener(this._errorHandler));
42
67
  this._tokenStream = new CommonTokenStream(this._lexer);
68
+ /**
69
+ * All tokens are generated in advance.
70
+ * This can cause performance degradation, but it seems necessary for now.
71
+ * Because the tokens will be used multiple times.
72
+ */
43
73
  this._tokenStream.fill();
44
74
  this._parser = this.createParserFromTokenStream(this._tokenStream);
45
75
  this._parser.buildParseTree = true;
@@ -51,23 +81,20 @@ export default class BasicParser {
51
81
  * unless the errorListener parameter is passed.
52
82
  * @param input source string
53
83
  * @param errorListener listen errors
54
- * @returns parserTree
84
+ * @returns parseTree
55
85
  */
56
- parse(input, errorListener) {
86
+ parseWithCache(input, errorListener) {
57
87
  // Avoid parsing the same input repeatedly.
58
88
  if (this._parsedInput === input && !errorListener) {
59
- return;
89
+ return this._parseTree;
60
90
  }
91
+ this._parseErrors = [];
61
92
  const parser = this.createParserWithCache(input);
62
93
  this._parsedInput = input;
63
94
  parser.removeErrorListeners();
64
- this._errorCollector.clear();
65
- parser.addErrorListener(this._errorCollector);
66
- if (errorListener) {
67
- parser.addErrorListener(new ParserErrorListener(errorListener));
68
- }
69
- this._parserTree = parser.program();
70
- return this._parserTree;
95
+ parser.addErrorListener(new ParseErrorListener(this._errorHandler));
96
+ this._parseTree = parser.program();
97
+ return this._parseTree;
71
98
  }
72
99
  /**
73
100
  * Validate input string and return syntax errors if exists.
@@ -75,45 +102,28 @@ export default class BasicParser {
75
102
  * @returns syntax errors
76
103
  */
77
104
  validate(input) {
78
- this.parse(input);
79
- const lexerError = [];
80
- return lexerError.concat(this._errorCollector.parserErrors);
105
+ this.parseWithCache(input);
106
+ return this._parseErrors;
81
107
  }
82
108
  /**
83
- * Get all Tokens of input string,'<EOF>' is not included
109
+ * Get all Tokens of input string,'<EOF>' is not included.
84
110
  * @param input source string
85
111
  * @returns Token[]
86
112
  */
87
113
  getAllTokens(input) {
88
- this.parse(input);
114
+ this.parseWithCache(input);
89
115
  let allTokens = this._tokenStream.getTokens();
90
116
  if (allTokens[allTokens.length - 1].text === '<EOF>') {
91
117
  allTokens = allTokens.slice(0, -1);
92
118
  }
93
119
  return allTokens;
94
120
  }
95
- ;
96
- /**
97
- * It convert tree to string, it's convenient to use in unit test.
98
- * @param string input
99
- */
100
- parserTreeToString(input) {
101
- this.parse(input);
102
- return this._parserTree.toStringTree(this._parser.ruleNames);
103
- }
104
- /**
105
- * Get List-like style tree string
106
- * @param parserTree ProgramRuleContext
107
- */
108
- toString(parserTree) {
109
- return parserTree.toStringTree(this._parser.ruleNames);
110
- }
111
121
  /**
112
122
  * @param listener Listener instance extends ParserListener
113
- * @param parserTree parser Tree
123
+ * @param parseTree parser Tree
114
124
  */
115
- listen(listener, parserTree) {
116
- ParseTreeWalker.DEFAULT.walk(listener, parserTree);
125
+ listen(listener, parseTree) {
126
+ ParseTreeWalker.DEFAULT.walk(listener, parseTree);
117
127
  }
118
128
  /**
119
129
  * Split input into statements.
@@ -121,10 +131,16 @@ export default class BasicParser {
121
131
  * @param input source string
122
132
  */
123
133
  splitSQLByStatement(input) {
124
- this.parse(input);
134
+ const errors = this.validate(input);
135
+ if (errors.length) {
136
+ return null;
137
+ }
125
138
  const splitListener = this.splitListener;
126
- this.listen(splitListener, this._parserTree);
127
- const res = splitListener.statementsContext.map(context => {
139
+ // TODO: add splitListener to all sqlParser implements add remove following if
140
+ if (!splitListener)
141
+ return null;
142
+ this.listen(splitListener, this._parseTree);
143
+ const res = splitListener.statementsContext.map((context) => {
128
144
  const { start, stop } = context;
129
145
  return {
130
146
  startIndex: start.startIndex,
@@ -149,11 +165,11 @@ export default class BasicParser {
149
165
  // TODO: add splitListener to all sqlParser implements add remove following if
150
166
  if (!splitListener)
151
167
  return null;
152
- this.parse(input);
168
+ this.parseWithCache(input);
153
169
  let sqlParserIns = this._parser;
154
170
  const allTokens = this.getAllTokens(input);
155
171
  let caretTokenIndex = findCaretTokenIndex(caretPosition, allTokens);
156
- let c3Context = this._parserTree;
172
+ let c3Context = this._parseTree;
157
173
  let tokenIndexOffset = 0;
158
174
  if (!caretTokenIndex && caretTokenIndex !== 0)
159
175
  return null;
@@ -161,25 +177,25 @@ export default class BasicParser {
161
177
  * Split sql by statement.
162
178
  * Try to collect candidates from the caret statement only.
163
179
  */
164
- this.listen(splitListener, this._parserTree);
180
+ this.listen(splitListener, this._parseTree);
165
181
  // If there are multiple statements.
166
182
  if (splitListener.statementsContext.length > 1) {
167
183
  // find statement rule context where caretPosition is located.
168
- const caretStatementContext = splitListener === null || splitListener === void 0 ? void 0 : splitListener.statementsContext.find(ctx => {
184
+ const caretStatementContext = splitListener === null || splitListener === void 0 ? void 0 : splitListener.statementsContext.find((ctx) => {
169
185
  var _a;
170
- return caretTokenIndex <= ((_a = ctx.stop) === null || _a === void 0 ? void 0 : _a.tokenIndex) && caretTokenIndex >= ctx.start.tokenIndex;
186
+ return (caretTokenIndex <= ((_a = ctx.stop) === null || _a === void 0 ? void 0 : _a.tokenIndex) &&
187
+ caretTokenIndex >= ctx.start.tokenIndex);
171
188
  });
172
189
  if (caretStatementContext) {
173
190
  c3Context = caretStatementContext;
174
191
  }
175
192
  else {
176
- const lastStatementToken = splitListener
177
- .statementsContext[(splitListener === null || splitListener === void 0 ? void 0 : splitListener.statementsContext.length) - 1]
193
+ const lastStatementToken = splitListener.statementsContext[(splitListener === null || splitListener === void 0 ? void 0 : splitListener.statementsContext.length) - 1]
178
194
  .start;
179
195
  /**
180
196
  * If caretStatementContext is not found and it follows all statements.
181
197
  * Reparses part of the input following the penultimate statement.
182
- * And c3 will collect candidates in the new parserTreeContext.
198
+ * And c3 will collect candidates in the new parseTreeContext.
183
199
  */
184
200
  if (caretTokenIndex > (lastStatementToken === null || lastStatementToken === void 0 ? void 0 : lastStatementToken.tokenIndex)) {
185
201
  /**
@@ -191,6 +207,7 @@ export default class BasicParser {
191
207
  caretTokenIndex = caretTokenIndex - tokenIndexOffset;
192
208
  const inputSlice = input.slice(lastStatementToken.startIndex);
193
209
  const lexer = this.createLexer(inputSlice);
210
+ lexer.removeErrorListeners();
194
211
  const tokenStream = new CommonTokenStream(lexer);
195
212
  tokenStream.fill();
196
213
  const parser = this.createParserFromTokenStream(tokenStream);
@@ -205,16 +222,15 @@ export default class BasicParser {
205
222
  core.preferredRules = this.preferredRules;
206
223
  const candidates = core.collectCandidates(caretTokenIndex, c3Context);
207
224
  const originalSuggestions = this.processCandidates(candidates, allTokens, caretTokenIndex, tokenIndexOffset);
208
- const syntaxSuggestions = originalSuggestions.syntax
209
- .map(syntaxCtx => {
210
- const wordRanges = syntaxCtx.wordRanges.map(token => {
225
+ const syntaxSuggestions = originalSuggestions.syntax.map((syntaxCtx) => {
226
+ const wordRanges = syntaxCtx.wordRanges.map((token) => {
211
227
  return {
212
228
  text: this._parsedInput.slice(token.startIndex, token.stopIndex + 1),
213
229
  startIndex: token.startIndex,
214
230
  stopIndex: token.stopIndex,
215
231
  line: token.line,
216
232
  startColumn: token.charPositionInLine + 1,
217
- stopColumn: token.charPositionInLine + token.text.length
233
+ stopColumn: token.charPositionInLine + token.text.length,
218
234
  };
219
235
  });
220
236
  return {
@@ -224,7 +240,7 @@ export default class BasicParser {
224
240
  });
225
241
  return {
226
242
  syntax: syntaxSuggestions,
227
- keywords: originalSuggestions.keywords
243
+ keywords: originalSuggestions.keywords,
228
244
  };
229
245
  }
230
246
  }
@@ -1 +1 @@
1
- {"version":3,"file":"basicParser.js","sourceRoot":"","sources":["../../../src/parser/common/basicParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,WAAW,EACX,iBAAiB,EAGpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAqB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAwB,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAQtE,OAAO,mBAAmB,EAAE,EAGxB,oBAAoB,GACvB,MAAM,uBAAuB,CAAC;AAW/B;;GAEG;AACH,MAAM,CAAC,OAAO,OAAgB,WAAW;IAAzC;QAUc,oBAAe,GAAyB,IAAI,oBAAoB,EAAE,CAAC;QACnE,iBAAY,GAAW,IAAI,CAAC;IA0R1C,CAAC;IAnPG;;;OAGG;IACI,WAAW,CAAC,KAAa;QAC5B,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC;IAEjB,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,KAAa;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACO,qBAAqB,CAAC,KAAa;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEhE,IAAI,CAAC,YAAY,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAEzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;QAEnC,OAAO,IAAI,CAAC,OAAO,CAAA;IACvB,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CACR,KAAa,EACb,aAAiC;QAEjC,2CAA2C;QAC3C,IAAG,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE;YAC9C,OAAO;SACV;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAE7B,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9C,IAAG,aAAa,EAAE;YACd,MAAM,CAAC,gBAAgB,CAAC,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;SACnE;QAED,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAEpC,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,KAAa;QACzB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClB,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAChE,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,KAAa;QAC7B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClB,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QAC9C,IAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;YACjD,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;SACrC;QACD,OAAO,SAAS,CAAA;IACpB,CAAC;IAAA,CAAC;IACF;;;OAGG;IACI,kBAAkB,CAAC,KAAa;QACnC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,UAAe;QAC3B,OAAO,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACI,MAAM,CAAoD,QAAa,EAAE,UAAe;QAC3F,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACI,mBAAmB,CAAC,KAAK;QAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE7C,MAAM,GAAG,GAAG,aAAa,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACtD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;YAChC,OAAO;gBACH,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS;gBACxB,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,OAAO,EAAE,IAAI,CAAC,IAAI;gBAClB,WAAW,EAAE,KAAK,CAAC,kBAAkB,GAAG,CAAC;gBACzC,SAAS,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;gBACrD,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;aACtE,CAAA;QACL,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACI,4BAA4B,CAAC,KAAa,EAAE,aAA4B;QAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,8EAA8E;QAC9E,IAAG,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC;QAE/B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClB,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,eAAe,GAAG,mBAAmB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACpE,IAAI,SAAS,GAAsB,IAAI,CAAC,WAAW,CAAC;QACpD,IAAI,gBAAgB,GAAW,CAAC,CAAC;QAEjC,IAAG,CAAC,eAAe,IAAI,eAAe,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAE1D;;;WAGG;QACH,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE7C,oCAAoC;QACpC,IAAI,aAAa,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,8DAA8D;YAC9D,MAAM,qBAAqB,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;;gBACtE,OAAO,eAAe,KAAI,MAAA,GAAG,CAAC,IAAI,0CAAE,UAAU,CAAA,IAAI,eAAe,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;YAC9F,CAAC,CAAC,CAAC;YAEH,IAAG,qBAAqB,EAAE;gBACtB,SAAS,GAAG,qBAAqB,CAAA;aACpC;iBAAM;gBACH,MAAM,kBAAkB,GAAE,aAAa;qBAClC,iBAAiB,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,iBAAiB,CAAC,MAAM,IAAG,CAAC,CAAC;qBAC9D,KAAK,CAAC;gBACX;;;;mBAIG;gBACH,IAAI,eAAe,IAAG,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,UAAU,CAAA,EAAE;oBAClD;;;uBAGG;oBACH,gBAAgB,GAAG,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,UAAU,CAAC;oBAClD,0BAA0B;oBAC1B,eAAe,GAAG,eAAe,GAAG,gBAAgB,CAAC;oBAErD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;oBAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;oBAC3C,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBACjD,WAAW,CAAC,IAAI,EAAE,CAAC;oBACnB,MAAM,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;oBAC7D,MAAM,CAAC,oBAAoB,EAAE,CAAC;oBAC9B,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;oBAC7B,YAAY,GAAG,MAAM,CAAC;oBACtB,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;iBAChC;aACJ;SACJ;QAED,MAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAE1C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACtE,MAAM,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;QAE7G,MAAM,iBAAiB,GAAkC,mBAAmB,CAAC,MAAM;aAC9E,GAAG,CAAC,SAAS,CAAC,EAAE;YACb,MAAM,UAAU,GAAgB,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAC7D,OAAO;oBACH,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;oBACpE,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,WAAW,EAAE,KAAK,CAAC,kBAAkB,GAAG,CAAC;oBACzC,UAAU,EAAE,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM;iBAC3D,CAAA;YACL,CAAC,CAAC,CAAA;YACF,OAAO;gBACH,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;gBAC9C,UAAU;aACb,CAAA;QACL,CAAC,CAAC,CAAA;QACN,OAAO;YACH,MAAM,EAAE,iBAAiB;YACzB,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;SACzC,CAAA;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"basicParser.js","sourceRoot":"","sources":["../../../src/parser/common/basicParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { Token, Recognizer, ANTLRErrorListener, RecognitionException } from 'antlr4ts';
2
+ import { ATNSimulator } from 'antlr4ts/atn/ATNSimulator';
3
+ /**
4
+ * Converted from {@link SyntaxError}.
5
+ */
6
+ export interface ParseError {
7
+ startLine: number;
8
+ endLine: number;
9
+ startCol: number;
10
+ endCol: number;
11
+ message: string;
12
+ }
13
+ /**
14
+ * The type of error resulting from lexical parsing and parsing.
15
+ */
16
+ export interface SyntaxError<T> {
17
+ recognizer: Recognizer<T, ATNSimulator>;
18
+ offendingSymbol: Token;
19
+ line: number;
20
+ charPositionInLine: number;
21
+ msg: string;
22
+ e: RecognitionException;
23
+ }
24
+ /**
25
+ * ErrorHandler will be invoked when it encounters a parsing error.
26
+ * Includes lexical errors and parsing errors.
27
+ */
28
+ export type ErrorHandler<T> = (parseError: ParseError, originalError: SyntaxError<T>) => void;
29
+ export default class ParseErrorListener implements ANTLRErrorListener<Token> {
30
+ private _errorHandler;
31
+ constructor(errorListener: ErrorHandler<Token>);
32
+ syntaxError(recognizer: Recognizer<Token, ATNSimulator>, offendingSymbol: any, line: number, charPositionInLine: number, msg: string, e: RecognitionException): void;
33
+ }
@@ -0,0 +1,28 @@
1
+ export default class ParseErrorListener {
2
+ constructor(errorListener) {
3
+ this._errorHandler = errorListener;
4
+ }
5
+ syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e) {
6
+ let endCol = charPositionInLine + 1;
7
+ if (offendingSymbol && offendingSymbol.text !== null) {
8
+ endCol = charPositionInLine + offendingSymbol.text.length;
9
+ }
10
+ if (this._errorHandler) {
11
+ this._errorHandler({
12
+ startLine: line,
13
+ endLine: line,
14
+ startCol: charPositionInLine,
15
+ endCol: endCol,
16
+ message: msg,
17
+ }, {
18
+ e,
19
+ line,
20
+ msg,
21
+ recognizer,
22
+ offendingSymbol,
23
+ charPositionInLine,
24
+ });
25
+ }
26
+ }
27
+ }
28
+ //# sourceMappingURL=parseErrorListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseErrorListener.js","sourceRoot":"","sources":["../../../src/parser/common/parseErrorListener.ts"],"names":[],"mappings":"AAgCA,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAGnC,YAAY,aAAkC;QAC1C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;IAED,WAAW,CACP,UAA2C,EAC3C,eAAe,EACf,IAAY,EACZ,kBAA0B,EAC1B,GAAW,EACX,CAAuB;QAEvB,IAAI,MAAM,GAAG,kBAAkB,GAAG,CAAC,CAAC;QACpC,IAAI,eAAe,IAAI,eAAe,CAAC,IAAI,KAAK,IAAI,EAAE;YAClD,MAAM,GAAG,kBAAkB,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;SAC7D;QACD,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CACd;gBACI,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,GAAG;aACf,EACD;gBACI,CAAC;gBACD,IAAI;gBACJ,GAAG;gBACH,UAAU;gBACV,eAAe;gBACf,kBAAkB;aACrB,CACJ,CAAC;SACL;IACL,CAAC;CACJ"}
@@ -2,7 +2,7 @@ import { Token } from 'antlr4ts';
2
2
  import { CandidatesCollection } from 'antlr4-c3';
3
3
  import { FlinkSqlLexer } from '../lib/flinksql/FlinkSqlLexer';
4
4
  import { FlinkSqlParser, ProgramContext, SqlStatementContext, SqlStatementsContext } from '../lib/flinksql/FlinkSqlParser';
5
- import { FlinkSqlParserListener } from 'src/lib/flinksql/FlinkSqlParserListener';
5
+ import { FlinkSqlParserListener } from '../lib/flinksql/FlinkSqlParserListener';
6
6
  import { Suggestions } from './common/basic-parser-types';
7
7
  import BasicParser from './common/basicParser';
8
8
  export default class FlinkSQL extends BasicParser<FlinkSqlLexer, ProgramContext, FlinkSqlParser> {