public abstract void Visit(ValueExpression expression);
public string CalExpressionTreeResult(NCalc2.Expressions.LogicalExpression lgInput, int intSpaceInput) { if (lgInput == null) { return("\r\n"); } // string strRet = ""; string strTemp = ""; int i, j = 0; //Each time we call this function in another level, add more indication space int intSpace = intSpaceInput + 1; // if ((lgInput == null) || (lgInput.objResult == null)) //This one is Recursion stop condition { strRet = strRet + "null" + "\r\n"; } else if (lgInput is NCalc2.Expressions.ValueExpression) //This one is Recursion stop condition { NCalc2.Expressions.ValueExpression ValueEx = (NCalc2.Expressions.ValueExpression)lgInput; strRet = strRet + lgInput.ToString() + ":" + ValueEx.Value.ToString() + "\r\n"; } else if (lgInput is NCalc2.Expressions.IdentifierExpression) //This one is Recursion stop condition { strRet = strRet + lgInput.ToString() + ": " + lgInput.objResult.ToString() + "\r\n"; } else if (lgInput is NCalc2.Expressions.FunctionExpression) //This case may do recursion { strRet = strRet + lgInput.ToString() + ": " + lgInput.objResult.ToString() + "\r\n"; // NCalc2.Expressions.FunctionExpression FuncExpress = (NCalc2.Expressions.FunctionExpression)lgInput; for (j = 0; j < intSpace; j++) { strTemp = strTemp + "___"; } for (i = 0; i < FuncExpress.Expressions.Length; i++) { strRet = strRet + strTemp + this.CalExpressionTreeResult(FuncExpress.Expressions[i], intSpace);// + "\r\n"; } } else if (lgInput is NCalc2.Expressions.BinaryExpression) //This case may do recursion { NCalc2.Expressions.BinaryExpression BinaryEx = (NCalc2.Expressions.BinaryExpression)lgInput; strRet = strRet + lgInput.ToString() + ": " + lgInput.objResult.ToString() + "\r\n"; for (j = 0; j < intSpace; j++) { strTemp = strTemp + "___"; } strRet = strRet + strTemp + this.CalExpressionTreeResult(BinaryEx.LeftExpression, intSpace); // + "\r\n"; strRet = strRet + strTemp + this.CalExpressionTreeResult(BinaryEx.RightExpression, intSpace); // + "\r\n"; } else if (lgInput is NCalc2.Expressions.TernaryExpression) //This case may do recursion { NCalc2.Expressions.TernaryExpression TernaryEx = (NCalc2.Expressions.TernaryExpression)lgInput; strRet = strRet + lgInput.ToString() + ": " + lgInput.objResult.ToString() + "\r\n"; for (j = 0; j < intSpace; j++) { strTemp = strTemp + "___"; } strRet = strRet + strTemp + this.CalExpressionTreeResult(TernaryEx.LeftExpression, intSpace); // + "\r\n"; strRet = strRet + strTemp + this.CalExpressionTreeResult(TernaryEx.MiddleExpression, intSpace); // + "\r\n"; strRet = strRet + strTemp + this.CalExpressionTreeResult(TernaryEx.RightExpression, intSpace); // + "\r\n"; } else if (lgInput is NCalc2.Expressions.UnaryExpression) //This case may do recursion { NCalc2.Expressions.UnaryExpression UnaryEx = (NCalc2.Expressions.UnaryExpression)lgInput; strRet = strRet + lgInput.ToString() + ": " + lgInput.objResult.ToString() + "\r\n"; for (j = 0; j < intSpace; j++) { strTemp = strTemp + "___"; } strRet = strRet + strTemp + this.CalExpressionTreeResult(UnaryEx.Expression, intSpace);// + "\r\n"; } else //This one is Recursion stop condition { //strRet = strRet + lgInput.ToString() + ": " + lgInput.objResult.ToString() + "\r\n"; } // return(strRet); }
public override void Visit(ValueExpression expression) { switch (expression.Type) { case ValueType.Boolean: Result.Append(expression.Value).Append(" "); break; case ValueType.DateTime: Result.Append("#").Append(expression.Value).Append("#").Append(" "); break; case ValueType.Float: Result.Append(decimal.Parse(expression.Value.ToString()).ToString(numberFormatInfo)).Append(" "); break; case ValueType.Integer: Result.Append(expression.Value).Append(" "); break; case ValueType.String: Result.Append("'").Append(expression.Value).Append("'").Append(" "); break; } }