using System; using System.Collections.Generic; using System.Text; using gudusoft.gsqlparser; using gudusoft.gsqlparser.Units; namespace visitexpression { class visitexpression { static void Main(string[] args) { TGSqlParser sqlparser = new TGSqlParser(TDbVendor.DbVOracle); sqlparser.SqlText.Text = @"SELECT f1 FROM t1 WHERE t1.a = 10.2 AND name = 'k' OR id IN ( 2, 4, 5 ) HAVING MAX(x) > 6 "; Console.WriteLine("Processing.."); int i = sqlparser.Parse(); if (i == 0) { visitbinaryexprtree(sqlparser.SqlStatements[0].WhereClause); } else Console.WriteLine(sqlparser.ErrorMessages); } public static void visitbinaryexprtree(TLzCustomExpression pExpr) { Console.WriteLine("pre-order:"); pExpr.PreOrderTraverse(treenodevisitor); Console.WriteLine("in-order:"); pExpr.InOrderTraverse(treenodevisitor); Console.WriteLine("post-order:"); pExpr.PostOrderTraverse(treenodevisitor); } public static Boolean treenodevisitor(TLz_Node pnode, Boolean pIsLeafNode) { TLzCustomExpression lcexpr; if (pIsLeafNode) { Console.WriteLine(pnode.AsText); } else { lcexpr = (TLzCustomExpression)pnode; if (lcexpr.oper == TLzOpType.Expr_Parenthesis) { Console.WriteLine("()"); } else if (lcexpr.opname != null) { Console.WriteLine(lcexpr.opname.AsText); } } return true; } } }