1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.distsql.parser.core.kernel;
19
20 import org.antlr.v4.runtime.tree.ErrorNode;
21 import org.apache.shardingsphere.sql.parser.api.ASTNode;
22 import org.apache.shardingsphere.sql.parser.core.ParseASTNode;
23 import org.apache.shardingsphere.sql.parser.core.SQLParserFactory;
24 import org.apache.shardingsphere.sql.parser.exception.SQLParsingException;
25 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
26
27
28
29
30 public final class KernelDistSQLStatementParserEngine {
31
32
33
34
35
36
37
38 public SQLStatement parse(final String sql) {
39 ASTNode astNode = SQLParserFactory.newInstance(sql, KernelDistSQLLexer.class, KernelDistSQLParser.class).parse();
40 return getSQLStatement(sql, (ParseASTNode) astNode);
41 }
42
43 private SQLStatement getSQLStatement(final String sql, final ParseASTNode parseASTNode) {
44 if (parseASTNode.getRootNode() instanceof ErrorNode) {
45 throw new SQLParsingException(sql);
46 }
47 return (SQLStatement) (new KernelDistSQLStatementVisitor()).visit(parseASTNode.getRootNode());
48 }
49 }