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:
Hayden
2024-02-26 20:25:09 +08:00
committed by GitHub
parent 5ce89cb421
commit 195878da9b
112 changed files with 648433 additions and 659067 deletions

View File

@ -19,9 +19,9 @@ describe('MySQL 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('MySQL 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('MySQL 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);
}
});
});

View File

@ -1,6 +1,6 @@
import MySQL from 'src/parser/mysql';
import { MySqlParserListener } from 'src/lib/mysql/MySqlParserListener';
import { ParseTreeListener } from 'antlr4ts/tree/ParseTreeListener';
import { ParseTreeListener } from 'antlr4ng';
describe('MySQL Listener Tests', () => {
const expectTableName = 'user1';
@ -13,8 +13,12 @@ describe('MySQL Listener Tests', () => {
let result = '';
class MyListener implements MySqlParserListener {
enterTableName = (ctx): void => {
result = ctx.text.toLowerCase();
result = ctx.getText().toLowerCase();
};
visitTerminal() {}
visitErrorNode() {}
enterEveryRule() {}
exitEveryRule() {}
}
const listenTableName: any = new MyListener();

View File

@ -42,7 +42,7 @@ describe('MySQL Database Administration Syntax Tests', () => {
it(sql, () => {
const result = parser.validate(sql);
if (result.length) {
console.log(result, `\nPlease check sql: ${sql}`);
console.error(result, `\nPlease check sql: ${sql}`);
}
expect(result.length).toBe(0);
});

View File

@ -49,7 +49,7 @@ describe('MySQL DDL Syntax Tests', () => {
it(sql, () => {
const result = parser.validate(sql);
if (result.length) {
console.log(result, `\nPlease check sql: ${sql}`);
console.error(result, `\nPlease check sql: ${sql}`);
}
expect(result.length).toBe(0);
});

View File

@ -33,7 +33,7 @@ describe('MySQL DML Syntax Tests', () => {
it(sql, () => {
const result = parser.validate(sql);
if (result.length) {
console.log(result, `\nPlease check sql: ${sql}`);
console.error(result, `\nPlease check sql: ${sql}`);
}
expect(result.length).toBe(0);
});

View File

@ -27,7 +27,7 @@ describe('MySQL Transactional and Locking, Replication, Prepared Compound and Ut
it(sql, () => {
const result = parser.validate(sql);
if (result.length) {
console.log(result, `\nPlease check sql: ${sql}`);
console.error(result, `\nPlease check sql: ${sql}`);
}
expect(result.length).toBe(0);
});

View File

@ -1,6 +1,6 @@
import MySQL from 'src/parser/mysql';
import { MySqlParserVisitor } from 'src/lib/mysql/MySqlParserVisitor';
import { AbstractParseTreeVisitor } from 'antlr4ts/tree/AbstractParseTreeVisitor';
import { AbstractParseTreeVisitor } from 'antlr4ng';
describe('MySQL Visitor Tests', () => {
const expectTableName = 'user1';
@ -8,7 +8,7 @@ describe('MySQL Visitor Tests', () => {
const parser = new MySQL();
const parseTree = parser.parse(sql, (error) => {
console.log('Parse error:', error);
console.error('Parse error:', error);
});
test('Visitor visitTableName', () => {
@ -19,7 +19,7 @@ describe('MySQL Visitor Tests', () => {
}
visitTableName = (ctx): void => {
result = ctx.text.toLowerCase();
result = ctx.getText().toLowerCase();
};
}
const visitor = new MyVisitor();