Refactor/basic parser (#182)

* feat: replace errorCollector with ParserErrorListener to collect lexer error

* refactor: remove useless method in basicParser

* feat: correct splitSQLByStatement method

* feat: rename parse to parseWithCache and add new parse method

* refactor: rename parserTree to parseTree

* test: rename parserTree to parseTree

* refactor: rename parserError to parseError

* feat: export ErrorHandler type

* feat: use errorhandler form params

* test: basic parser unit tests

* style: lint via prettier
This commit is contained in:
Hayden
2023-10-16 17:59:28 +08:00
committed by GitHub
parent 2f1325d4fc
commit f9dbd9fc23
22 changed files with 321 additions and 207 deletions

View File

@ -8,7 +8,7 @@ describe('HiveSQL Listener Tests', () => {
test('Listener enterSelectList', async () => {
const expectTableName = 'username';
const sql = `select ${expectTableName} from tablename where inc_day='20190601' limit 1000;`;
const parserTree = parser.parse(sql);
const parseTree = parser.parse(sql);
let result = '';
class MyListener implements HiveSqlParserListener {
@ -18,12 +18,12 @@ describe('HiveSQL Listener Tests', () => {
}
const listenTableName = new MyListener();
await parser.listen(listenTableName as ParseTreeListener, parserTree as ProgramContext);
await parser.listen(listenTableName as ParseTreeListener, parseTree as ProgramContext);
expect(result).toBe(expectTableName.toUpperCase());
});
test('Listener enterCreateTable', async () => {
const sql = `drop table table_name;`;
const parserTree = parser.parse(sql);
const parseTree = parser.parse(sql);
let result = '';
class MyListener implements HiveSqlParserListener {
enterDropTableStatement(ctx) {
@ -32,7 +32,7 @@ describe('HiveSQL Listener Tests', () => {
}
const listenTableName = new MyListener();
await parser.listen(listenTableName as ParseTreeListener, parserTree as ProgramContext);
await parser.listen(listenTableName as ParseTreeListener, parseTree as ProgramContext);
expect(result).toBe('DROPTABLETABLE_NAME');
});
});

View File

@ -8,7 +8,7 @@ describe('HiveSQL Visitor Tests', () => {
const sql = `select citycode,tc,inc_day from ${expectTableName} where inc_day='20190501' limit 100;`;
const parser = new HiveSQL();
const parserTree = parser.parse(sql, (error) => {
const parseTree = parser.parse(sql, (error) => {
console.log('Parse error:', error);
});
@ -25,7 +25,7 @@ describe('HiveSQL Visitor Tests', () => {
}
const visitor = new MyVisitor();
visitor.visit(parserTree as ProgramContext);
visitor.visit(parseTree as ProgramContext);
expect(result).toBe(expectTableName);
});