lava-oushudb-dt-sql-parser/src/parser/spark.ts

20 lines
812 B
TypeScript
Raw Normal View History

2020-10-28 21:34:13 +08:00
import { InputStream, CommonTokenStream, Lexer } from 'antlr4';
2020-12-17 11:44:45 +08:00
import { SparkSqlLexer } from '../lib/spark/SparkSqlLexer';
import { SparkSqlParser } from '../lib/spark/SparkSqlParser';
export * from '../lib/spark/SparkSqlVisitor';
export * from '../lib/spark/SparkSqlListener';
2020-10-28 21:34:13 +08:00
import BasicParser from './common/BasicParser';
export default class SparkSQL extends BasicParser {
public createLexer(input: string): Lexer {
const chars = new InputStream(input.toUpperCase()); // Some Lexer only support uppercase token, So you need transform
2020-12-17 11:44:45 +08:00
const lexer = <unknown> new SparkSqlLexer(chars) as Lexer;
2020-10-28 21:34:13 +08:00
return lexer;
}
public createParserFromLexer(lexer: Lexer) {
const tokenStream = new CommonTokenStream(lexer);
2020-12-17 11:44:45 +08:00
return new SparkSqlParser(tokenStream);
2020-10-28 21:34:13 +08:00
}
}