feat: migrate to antlr4ng (#267)
* feat: replace antlr4ts with antlr4ng * feat: switch caseInsensitive option on * feat: recompile all g4 file * feat: update parser to fit antlr4ng * test: update test to fit antlr4ng
This commit is contained in:
@ -19,9 +19,9 @@ describe('HiveSQL ErrorStrategy test', () => {
|
||||
const statementCount = splitListener.statementsContext.length;
|
||||
splitListener.statementsContext.map((item, index) => {
|
||||
if (index !== statementCount - 1 && index !== statementCount - 2) {
|
||||
expect(item.exception).not.toBe(undefined);
|
||||
expect(item.exception).not.toBe(null);
|
||||
} else {
|
||||
expect(item.exception).toBe(undefined);
|
||||
expect(item.exception).toBe(null);
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -36,9 +36,9 @@ describe('HiveSQL ErrorStrategy test', () => {
|
||||
const statementCount = splitListener.statementsContext.length;
|
||||
splitListener.statementsContext.map((item, index) => {
|
||||
if (index !== statementCount - 1 && index !== 0) {
|
||||
expect(item.exception).not.toBe(undefined);
|
||||
expect(item.exception).not.toBe(null);
|
||||
} else {
|
||||
expect(item.exception).toBe(undefined);
|
||||
expect(item.exception).toBe(null);
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -52,9 +52,9 @@ describe('HiveSQL ErrorStrategy test', () => {
|
||||
|
||||
splitListener.statementsContext.map((item, index) => {
|
||||
if (index !== 0 && index !== 1) {
|
||||
expect(item.exception).not.toBe(undefined);
|
||||
expect(item.exception).not.toBe(null);
|
||||
} else {
|
||||
expect(item.exception).toBe(undefined);
|
||||
expect(item.exception).toBe(null);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { ParseTreeListener } from 'antlr4ts/tree/ParseTreeListener';
|
||||
import { ParseTreeListener } from 'antlr4ng';
|
||||
import HiveSQL from 'src/parser/hive';
|
||||
import { ProgramContext } from 'src/lib/hive/HiveSqlParser';
|
||||
import { ProgramContext, SelectItemContext } from 'src/lib/hive/HiveSqlParser';
|
||||
import { HiveSqlParserListener } from 'src/lib/hive/HiveSqlParserListener';
|
||||
|
||||
describe('HiveSQL Listener Tests', () => {
|
||||
@ -12,14 +12,18 @@ describe('HiveSQL Listener Tests', () => {
|
||||
|
||||
let result = '';
|
||||
class MyListener implements HiveSqlParserListener {
|
||||
enterSelectItem(ctx) {
|
||||
result = ctx.text;
|
||||
enterSelectItem(ctx: SelectItemContext) {
|
||||
result = ctx.getText();
|
||||
}
|
||||
visitTerminal() {}
|
||||
visitErrorNode() {}
|
||||
enterEveryRule() {}
|
||||
exitEveryRule() {}
|
||||
}
|
||||
const listenTableName = new MyListener();
|
||||
|
||||
await parser.listen(listenTableName as ParseTreeListener, parseTree as ProgramContext);
|
||||
expect(result).toBe(expectTableName.toUpperCase());
|
||||
expect(result).toBe(expectTableName);
|
||||
});
|
||||
test('Listener enterCreateTable', async () => {
|
||||
const sql = `drop table table_name;`;
|
||||
@ -27,13 +31,18 @@ describe('HiveSQL Listener Tests', () => {
|
||||
let result = '';
|
||||
class MyListener implements HiveSqlParserListener {
|
||||
enterDropTableStatement(ctx) {
|
||||
result = ctx.text;
|
||||
result = ctx.getText();
|
||||
}
|
||||
|
||||
visitTerminal() {}
|
||||
visitErrorNode() {}
|
||||
enterEveryRule() {}
|
||||
exitEveryRule() {}
|
||||
}
|
||||
const listenTableName = new MyListener();
|
||||
|
||||
await parser.listen(listenTableName as ParseTreeListener, parseTree as ProgramContext);
|
||||
expect(result).toBe('DROPTABLETABLE_NAME');
|
||||
expect(result).toBe('droptabletable_name');
|
||||
});
|
||||
|
||||
test('Split sql listener', async () => {
|
||||
|
@ -1,8 +1,8 @@
|
||||
import { AbstractParseTreeVisitor } from 'antlr4ts/tree/AbstractParseTreeVisitor';
|
||||
import { AbstractParseTreeVisitor } from 'antlr4ng';
|
||||
|
||||
import HiveSQL from 'src/parser/hive';
|
||||
import { HiveSqlParserVisitor } from 'src/lib/hive/HiveSqlParserVisitor';
|
||||
import { ProgramContext } from 'src/lib/hive/HiveSqlParser';
|
||||
import { ProgramContext, TableNameContext } from 'src/lib/hive/HiveSqlParser';
|
||||
|
||||
describe('HiveSQL Visitor Tests', () => {
|
||||
const expectTableName = 'dm_gis.dlv_addr_tc_count';
|
||||
@ -10,7 +10,7 @@ describe('HiveSQL Visitor Tests', () => {
|
||||
const parser = new HiveSQL();
|
||||
|
||||
const parseTree = parser.parse(sql, (error) => {
|
||||
console.log('Parse error:', error);
|
||||
console.error('Parse error:', error);
|
||||
});
|
||||
|
||||
test('Visitor visitTableName', () => {
|
||||
@ -20,8 +20,8 @@ describe('HiveSQL Visitor Tests', () => {
|
||||
return result;
|
||||
}
|
||||
|
||||
visitTableName(ctx) {
|
||||
result = ctx.text.toLowerCase();
|
||||
visitTableName(ctx: TableNameContext) {
|
||||
result = ctx.getText().toLowerCase();
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user