Ejemplo n.º 1
0
 public abstract void Visit(ValueExpression expression);
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
            }
        }