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('FlinkSQL 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('FlinkSQL 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('FlinkSQL 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,4 +1,4 @@
 | 
			
		||||
import { ParseTreeListener } from 'antlr4ts/tree/ParseTreeListener';
 | 
			
		||||
import { ErrorNode, ParseTreeListener, ParserRuleContext, TerminalNode } from 'antlr4ng';
 | 
			
		||||
import FlinkSQL from 'src/parser/flinksql';
 | 
			
		||||
import { FlinkSqlParserListener } from 'src/lib/flinksql/FlinkSqlParserListener';
 | 
			
		||||
import { TableExpressionContext } from 'src/lib/flinksql/FlinkSqlParser';
 | 
			
		||||
@ -14,12 +14,16 @@ describe('Flink SQL Listener Tests', () => {
 | 
			
		||||
        let result = '';
 | 
			
		||||
        class MyListener implements FlinkSqlParserListener {
 | 
			
		||||
            enterTableExpression = (ctx: TableExpressionContext): void => {
 | 
			
		||||
                result = ctx.text.toLowerCase();
 | 
			
		||||
                result = ctx.getText().toLowerCase();
 | 
			
		||||
            };
 | 
			
		||||
            visitTerminal(node: TerminalNode): void {}
 | 
			
		||||
            visitErrorNode(node: ErrorNode): void {}
 | 
			
		||||
            enterEveryRule(node: ParserRuleContext): void {}
 | 
			
		||||
            exitEveryRule(node: ParserRuleContext): void {}
 | 
			
		||||
        }
 | 
			
		||||
        const listenTableName = new MyListener();
 | 
			
		||||
 | 
			
		||||
        await parser.listen(listenTableName as ParseTreeListener, parseTree);
 | 
			
		||||
        await parser.listen(listenTableName, parseTree);
 | 
			
		||||
        expect(result).toBe(expectTableName);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,7 @@
 | 
			
		||||
import FlinkSQL from 'src/parser/flinksql';
 | 
			
		||||
import { FlinkSqlParserVisitor } from 'src/lib/flinksql/FlinkSqlParserVisitor';
 | 
			
		||||
import { AbstractParseTreeVisitor } from 'antlr4ts/tree/AbstractParseTreeVisitor';
 | 
			
		||||
import { AbstractParseTreeVisitor } from 'antlr4ng';
 | 
			
		||||
import { TableExpressionContext } from 'src/lib/flinksql/FlinkSqlParser';
 | 
			
		||||
 | 
			
		||||
describe('Flink SQL Visitor Tests', () => {
 | 
			
		||||
    const expectTableName = 'user1';
 | 
			
		||||
@ -8,7 +9,7 @@ describe('Flink SQL Visitor Tests', () => {
 | 
			
		||||
    const parser = new FlinkSQL();
 | 
			
		||||
 | 
			
		||||
    const parseTree = parser.parse(sql, (error) => {
 | 
			
		||||
        console.log('Parse error:', error);
 | 
			
		||||
        console.error('Parse error:', error);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('Visitor visitTableName', () => {
 | 
			
		||||
@ -20,9 +21,9 @@ describe('Flink SQL Visitor Tests', () => {
 | 
			
		||||
            protected defaultResult() {
 | 
			
		||||
                return result;
 | 
			
		||||
            }
 | 
			
		||||
            visitTableExpression = (ctx): void => {
 | 
			
		||||
                result = ctx.text.toLowerCase();
 | 
			
		||||
            };
 | 
			
		||||
            visitTableExpression(ctx: TableExpressionContext) {
 | 
			
		||||
                result = ctx.getText().toLowerCase();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        const visitor: any = new MyVisitor();
 | 
			
		||||
        visitor.visit(parseTree);
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user