001import gudusoft.gsqlparser.*;
002import gudusoft.gsqlparser.compiler.TASTEvaluator;
003import gudusoft.gsqlparser.compiler.TGlobalScope;
004import gudusoft.gsqlparser.nodes.TFunctionCall;
005import gudusoft.gsqlparser.nodes.TObjectName;
006import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
007import gudusoft.gsqlparser.sqlenv.TSQLEnv;
008import gudusoft.gsqlparser.stmt.TExecImmeStmt;
009
010import java.io.IOException;
011
012public class gspEval {
013    public static void main(String args[]) throws IOException {
014        EDbVendor dbVendor = EDbVendor.dbvredshift;
015        TSQLEnv sqlEnv = new TSQLEnv(dbVendor) {
016            @Override
017            public void initSQLEnv() {
018            }
019        };
020
021        TLog.enableInterpreterLogOnly();
022
023        TGlobalScope globalScope = new TGlobalScope(sqlEnv);
024        TGSqlParser sqlParser = new TGSqlParser(dbVendor);
025        String inputFile = "c:\\prg\\tmp\\demo.sql";
026        sqlParser.sqlfilename = inputFile;
027
028        int ret = sqlParser.parse();
029        if (ret != 0){
030            System.out.println(sqlParser.getErrormessage());
031            return ;
032        }
033
034//        for(TCustomSqlStatement s: sqlParser.sqlstatements){
035//            System.out.println(s.getClass().getName());
036//        }
037
038        TASTEvaluator astEvaluator = new TASTEvaluator(sqlParser.sqlstatements,globalScope);
039        astEvaluator.eval();
040        //System.out.println(Integer);
041        TBaseType.dumpLogs(true);
042
043//        dynamicVarVisitor fv = new dynamicVarVisitor();
044//        for(int i=0;i<sqlParser.sqlstatements.size();i++){
045//            TCustomSqlStatement sqlStatement = sqlParser.sqlstatements.get(i);
046//
047//            sqlStatement.acceptChildren(fv);
048//        }
049    }
050}
051
052class dynamicVarVisitor extends TParseTreeVisitor {
053    public void preVisit(TExecImmeStmt stmt) {
054        System.out.println("Dynamic variable: "+stmt.getDynamicStringExpr().toString()+" with value: "+stmt.getDynamicStringExpr().getEvalValue().toString());
055    }
056}