Java import org.antlr.v4.runtime.*; import org.antlr.v4.runtime.tree.*; import org.stringtemplate.v4.*; public class SQLQueryGenerator { public static void main(String[] args) throws Exception { ANTLRInputStream input = new ANTLRInputStream("SELECT * FROM Customers"); SQLLexer lexer = new SQLLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); SQLParser parser = new SQLParser(tokens); ParseTree tree = parser.query(); STGroup stGroup = new STGroupFile("SqlTemplates.stg"); ST st = stGroup.getInstanceOf("selectQuery"); ParseTreeWalker walker = new ParseTreeWalker(); SQLTreeListener listener = new SQLTreeListener(st); walker.walk(listener, tree); System.out.println(st.render()); } } class SQLTreeListener extends SQLBaseListener { private ST st; public SQLTreeListener(ST template) { st = template; } @Override public void enterSelectStmt(SQLParser.SelectStmtContext ctx) { String tableName = ctx.tableName().getText(); st.add("table", tableName); } } HTML selectQuery(table) ::= << SELECT * FROM <table>; >> SELECT * FROM Customers;


上一篇:
下一篇:
切换中文