public override void Evaluate(IScriptContext context) { // ( Expr ) if (_typeExpr == null) { _expr.Evaluate(context); } // (Type) Expr else { _typeExpr.Evaluate(context); var type = context.Result as Type; if (type == null) { //NOTE: Handling special case of unary minus operator: // (3+2)-2; var unary = _expr as ScriptUnaryExpr; if (unary == null || unary.OperationSymbol != "-") { throw new ScriptSyntaxErrorException(Strings.TypeExpressionIsNotSyntacticallyCorrect); } //NOTE: expr + (unary expr) var left = context.Result; unary.Evaluate(context); context.Result = _operator.Evaluate(left, context.Result); return; } _expr.Evaluate(context); context.Result = RuntimeHost.Binder.ConvertTo(context.Result, type); } }
public override void Evaluate(IScriptContext context) { _expr.Evaluate(context); var handler = OnHandleOperator(this, context, OperationSymbol, context.Result); context.Result = handler.Cancel ? handler.Result : RuntimeHost.GetUnaryOperator(OperationSymbol).Evaluate(context.Result); }
public override void Evaluate(IScriptContext context) { if (_rightExpr != null) { _rightExpr.Evaluate(context); } context.Result = _assignOperation(context); }
public override void Evaluate(IScriptContext context) { var result = RuntimeHost.NullValue; //Create local scope var scope = RuntimeHost.ScopeFactory.Create(ScopeTypes.Local, context.Scope); context.CreateScope(scope); try { _init.Evaluate(context); _cond.Evaluate(context); bool condBool = context.Result == null ? true : (bool)context.Result; while (condBool) { _statement.Evaluate(context); result = context.Result; if (context.IsBreak() || context.IsReturn()) { context.SetBreak(false); break; } if (context.IsContinue()) { context.SetContinue(false); } _next.Evaluate(context); _cond.Evaluate(context); condBool = context.Result == null ? true : (bool)context.Result; } context.Result = result; } finally { context.RemoveLocalScope(); } }
public override void Evaluate(IScriptContext context) { _conditionExpression.Evaluate(context); #if DEBUG if (!(context.Result is bool)) { throw new ScriptVerificationException(Strings.VerificationNonBoolean); } #endif }
public override void Evaluate(IScriptContext context) { var switchValue = context.Result; _cond.Evaluate(context); if (switchValue.Equals(context.Result)) { _statement.Evaluate(context); context.SetBreak(true); } else { context.Result = switchValue; } }
public override void Evaluate(IScriptContext context) { _expr.Evaluate(context); if (context.Result == null) { throw new NullReferenceException(string.Format(Strings.NullReferenceInCode, Code(context))); } var enumeration = context.Result as IEnumerable; IEnumerator enumerator = null; if (enumeration != null) { enumerator = enumeration.GetEnumerator(); } else { IBinding bind = RuntimeHost.Binder.BindToMethod(context.Result, "GetEnumerator", new Type[0], new object[0]); if (bind != null) { enumerator = bind.Invoke(context, null) as IEnumerator; } } if (enumerator == null) { throw new ScriptExecutionException(string.Format(Strings.ForEachMethodNotFound, context.Result)); } enumerator.Reset(); while (enumerator.MoveNext()) { context.SetItem(_name.Text, enumerator.Current); _statement.Evaluate(context); if (context.IsBreak() || context.IsReturn()) { context.SetBreak(false); break; } if (context.IsContinue()) { context.SetContinue(false); } } }
private void CompleteEvaluate(IScriptContext context) { HandleOperatorArgs handling; left.Evaluate(context); var leftVal = context.Result; context.Result = RuntimeHost.NullValue; if ((Oper == "&&" && false.Equals(leftVal)) || (Oper == "||" && true.Equals(leftVal))) { handling = OnHandleOperator(this, context, Oper, leftVal); context.Result = handling.Cancel ? handling.Result : leftVal; return; } right.Evaluate(context); var rightVal = context.Result; handling = OnHandleOperator(this, context, Oper, leftVal, rightVal); context.Result = handling.Cancel ? handling.Result : OperatorFunction.Evaluate(leftVal, rightVal); }
public override void Evaluate(IScriptContext context) { _expr.Evaluate(context); context.Result = new[] { _name, context.Result }; }