提交 ae7c0f8a 编写于 作者: C codefairy08

Add MySQL DDL table related ast builder

上级 5825730f
package io.shardingsphere.core.parsing.antler.ast;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.CharStreams;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.Parser;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.TokenStream;
public abstract class AbstractParseTreeBuilder implements ParseTreeBuilder {
@Override
public ParserRuleContext parse(final String input) {
CharStream stream = CharStreams.fromString(input);
Lexer lexer = newLexer(stream);
CommonTokenStream tokenStream = new CommonTokenStream(lexer);
Parser parser = newParser(tokenStream);
return getParserTree(parser);
}
protected abstract Lexer newLexer(final CharStream stream);
protected abstract Parser newParser(final TokenStream tokenStream);
protected abstract ParserRuleContext getParserTree(final Parser parser);
}
package io.shardingsphere.core.parsing.antler.ast;
import org.antlr.v4.runtime.ParserRuleContext;
public interface ParseTreeBuilder {
ParserRuleContext parse(final String input);
}
package io.shardingsphere.core.parsing.antler.ast.mysql;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.Parser;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.TokenStream;
import io.shardingsphere.core.parsing.antler.ast.AbstractParseTreeBuilder;
import io.shardingsphere.core.parsing.antler.parser.mysql.MySQLAdvancedAlterTableParser;
import io.shardingsphere.parser.antlr.mysql.MySQLAlterTableLexer;
public class MySQLAlterTableParseTreeBuilder extends AbstractParseTreeBuilder {
@Override
protected Lexer newLexer(final CharStream stream) {
return new MySQLAlterTableLexer(stream);
}
@Override
protected Parser newParser(final TokenStream tokenStream) {
return new MySQLAdvancedAlterTableParser(tokenStream);
}
@Override
protected ParserRuleContext getParserTree(final Parser parser) {
MySQLAdvancedAlterTableParser alterTableParser = (MySQLAdvancedAlterTableParser)parser;
return alterTableParser.alterTable();
}
}
package io.shardingsphere.core.parsing.antler.ast.mysql;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.Parser;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.TokenStream;
import io.shardingsphere.core.parsing.antler.ast.AbstractParseTreeBuilder;
import io.shardingsphere.core.parsing.antler.parser.mysql.MySQLAdvancedCreateTableParser;
import io.shardingsphere.parser.antlr.mysql.MySQLCreateTableLexer;
public class MySQLCreateTableParseTreeBuilder extends AbstractParseTreeBuilder {
@Override
protected Lexer newLexer(final CharStream stream) {
return new MySQLCreateTableLexer(stream);
}
@Override
protected Parser newParser(final TokenStream tokenStream) {
return new MySQLAdvancedCreateTableParser(tokenStream);
}
@Override
protected ParserRuleContext getParserTree(final Parser parser) {
MySQLAdvancedCreateTableParser createTableParser = (MySQLAdvancedCreateTableParser) parser;
return createTableParser.createTable();
}
}
package io.shardingsphere.core.parsing.antler.ast.mysql;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.Parser;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.TokenStream;
import io.shardingsphere.core.parsing.antler.ast.AbstractParseTreeBuilder;
import io.shardingsphere.core.parsing.antler.parser.mysql.MySQLAdvancedDropTableParser;
import io.shardingsphere.parser.antlr.mysql.MySQLDropTableLexer;
public class MySQLDropTableParseTreeBuilder extends AbstractParseTreeBuilder {
@Override
protected Lexer newLexer(final CharStream stream) {
return new MySQLDropTableLexer(stream);
}
protected Parser newParser(final TokenStream tokenStream) {
return new MySQLAdvancedDropTableParser(tokenStream);
}
@Override
protected ParserRuleContext getParserTree(final Parser parser) {
MySQLAdvancedDropTableParser dropTableParser = (MySQLAdvancedDropTableParser) parser;
return dropTableParser.dropTable();
}
}
package io.shardingsphere.core.parsing.antler.ast.mysql;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.Parser;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.TokenStream;
import io.shardingsphere.core.parsing.antler.ast.AbstractParseTreeBuilder;
import io.shardingsphere.core.parsing.antler.parser.mysql.MySQLAdvancedTruncateTableParser;
import io.shardingsphere.parser.antlr.mysql.MySQLTruncateTableLexer;
public class MySQLTruncateTableParseTreeBuilder extends AbstractParseTreeBuilder {
@Override
protected Lexer newLexer(final CharStream stream) {
return new MySQLTruncateTableLexer(stream);
}
@Override
protected Parser newParser(final TokenStream tokenStream) {
return new MySQLAdvancedTruncateTableParser(tokenStream);
}
@Override
protected ParserRuleContext getParserTree(final Parser parser) {
MySQLAdvancedTruncateTableParser truncateTableParser = (MySQLAdvancedTruncateTableParser) parser;
return truncateTableParser.truncateTable();
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册