private void WalkTree(Expr boe) { if (boe != null) { try { var tboe = boe as BinaryOperatorExpression; if (tboe != null) { WalkTree(((BinaryOperatorExpression)boe).Left); Console.WriteLine(((BinaryOperatorExpression)boe).Operation.GetToken().IdentiferName); WalkTree(((BinaryOperatorExpression)boe).Right); } var ie = boe as IdentifierExpression; if (ie != null) { Console.WriteLine(boe.GetToken().IdentiferName); } var fce = boe as FunctionCallExpression; if (fce != null) { Console.WriteLine(fce.FunctionName); } } catch (Exception e) { Console.WriteLine(e); } } }