示例#1
0
        public override object GetValue(ExecutionContext ctx)
        {
            object lStart = _left.GetValue(ctx);
            object rStart = _right.GetValue(ctx);

            object lFinal;
            object rFinal;

            TypeChecker.GreatestCommonType gct = TypeChecker.GCT(lStart, rStart);
            switch (gct)
            {
            case TypeChecker.GreatestCommonType.StringType:
                lFinal = Convert.ToString(lStart);
                rFinal = Convert.ToString(rStart);
                break;

            case TypeChecker.GreatestCommonType.BooleanType:
                lFinal = Convert.ToBoolean(lStart);
                rFinal = Convert.ToBoolean(rStart);
                break;

            case TypeChecker.GreatestCommonType.NumericType:
                lFinal = Convert.ToDecimal(lStart);
                rFinal = Convert.ToDecimal(rStart);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            // execute on the converted values
            return(_op.Evaluate(lFinal, rFinal));
        }
示例#2
0
        public override object GetValue(ExecutionContext ctx)
        {
            string res = "";

            if (element != null)
            {
                res += Convert.ToString(element.GetValue(ctx));
            }
            if (concatenation != null)
            {
                res += Convert.ToString(concatenation.GetValue(ctx));
            }
            return(res);
        }
示例#3
0
        public override object GetValue(ExecutionContext ctx)
        {
            string    functionName = function.GetValue(ctx).ToString();
            Functor   f            = ctx.GetFunction(functionName);
            ArrayList arguments    = new ArrayList();

            if (!emptyArgsList)
            {
                if (args.GetType() == typeof(Sequence <Expression>))
                {
                    Sequence <Expression> seq = (Sequence <Expression>)args;

                    foreach (Expression ex in (Sequence <Expression>)args)
                    {
                        arguments.Add(ex.GetValue(ctx));
                    }
                }
                else
                {
                    arguments.Add(((Expression)args).GetValue(ctx));
                }
            }
            return(f.Execute(arguments.ToArray(), ctx));
        }
示例#4
0
 public override object GetValue(ExecutionContext ctx)
 {
     return(-(Convert.ToDecimal(computable.GetValue(ctx))));
 }
示例#5
0
 public override object GetValue(ExecutionContext ctx)
 {
     ctx[_receiver._idName] = (_expr != null) ? _expr.GetValue(ctx) : "";
     return(string.Format("{0}={1}", _receiver._idName, ctx[_receiver._idName]));
 }