public override AbstractValue AbstractEvaluate(AbstractContext context) { List<AbstractValue> values = new List<AbstractValue>(); foreach (Expression arg in _arguments) { values.Add(arg.AbstractEvaluate(context)); } return context.Binder.AbstractExecute(_action, values); }
public override AbstractValue AbstractEvaluate(AbstractContext context) { List <AbstractValue> values = new List <AbstractValue>(); foreach (Expression arg in _arguments) { values.Add(arg.AbstractEvaluate(context)); } return(context.Binder.AbstractExecute(_action, values)); }
public override AbstractValue AbstractEvaluate(AbstractContext context) { return(AbstractValue.Constant(_value, this)); }
public override AbstractValue AbstractEvaluate(AbstractContext context) { return(context.Lookup(_variable)); }
public override AbstractValue AbstractEvaluate(AbstractContext context) { return context.Lookup(_variable); }
public AbstractValue AbstractCall(AbstractContext context, IList<AbstractValue> args) { AbstractValue[] callArgs = new AbstractValue[_argBuilders.Count]; for (int i = 0; i < _argBuilders.Count; i++) { callArgs[i] = _argBuilders[i].AbstractBuild(context, args); } Expression[] argExprs = new Expression[callArgs.Length]; for (int i = 0; i < callArgs.Length; i++) { Expression expr = callArgs[i].Expression; if (expr == null) { argExprs = null; break; } else { argExprs[i] = expr; } } Expression callExpr = null; if (argExprs != null) { MethodInfo mi = Method as MethodInfo; if (mi != null) { Expression instance = mi.IsStatic ? null : _instanceBuilder.AbstractBuild(context, args).Expression; callExpr = Ast.SimpleCallHelper(instance, mi, argExprs); } else { callExpr = Ast.SimpleNewHelper((ConstructorInfo)Method, argExprs); } } return AbstractValue.LimitType(this.ReturnType, callExpr); }
public virtual AbstractValue AbstractEvaluate(AbstractContext context) { throw new NotImplementedException(); }
public override AbstractValue AbstractBuild(AbstractContext context, IList<AbstractValue> parameters) { AbstractValue value = parameters[_index]; return context.Binder.AbstractExecute(ConvertToAction.Make(_parameterType), new AbstractValue[] { value }); }
public virtual AbstractValue AbstractBuild(AbstractContext context, IList<AbstractValue> parameters) { throw new NotImplementedException(); }