@@ -0,0 +1,1442 @@
+package io.shardingsphere.core.parsing.antler.parser.factory;%0A%0Aimport org.antlr.v4.runtime.ParserRuleContext;%0A%0Aimport io.shardingsphere.core.constant.DatabaseType;%0Aimport io.shardingsphere.core.parsing.antler.VisitorManager;%0Aimport io.shardingsphere.core.parsing.antler.visitor.SQLVisitor;%0Aimport io.shardingsphere.core.parsing.lexer.LexerEngine;%0Aimport io.shardingsphere.core.parsing.lexer.token.TokenType;%0Aimport io.shardingsphere.core.parsing.parser.sql.SQLStatement;%0Aimport io.shardingsphere.core.rule.ShardingRule;%0A%0Apublic class StatementFactory %7B%0A    public static SQLStatement getStatement(final DatabaseType dbType, final TokenType tokenType,%0A            final ShardingRule shardingRule, final LexerEngine lexerEngine) %7B%0A%0A        ParserRuleContext rootNode = ParseTreeFactory.getTableDDLParser(dbType, tokenType, shardingRule, lexerEngine);%0A        if (rootNode != null) %7B%0A            String commandName = getCommandName(rootNode);%0A            SQLVisitor visitor = VisitorManager.getInstance().getVisitor(dbType, commandName);%0A            if (null != visitor) %7B%0A                return visitor.visit(rootNode);%0A            %7D%0A        %7D%0A%0A        return null;%0A    %7D%0A%0A    private static String getCommandName(ParserRuleContext node) %7B%0A        String name = node.getClass().getSimpleName();%0A        int pos = name.indexOf(%22Context%22);%0A        if (pos %3E 0) %7B%0A            return name.substring(0, pos);%0A        %7D%0A%0A        return name;%0A    %7D%0A%7D%0A

Add statement factory