Example #1
0
        public JsValue EvaluateLogicalExpression(LogicalExpression logicalExpression)
        {
            var left = _engine.GetValue(EvaluateExpression(logicalExpression.Left));

            switch (logicalExpression.Operator)
            {

                case LogicalOperator.LogicalAnd:
                    if (!TypeConverter.ToBoolean(left))
                    {
                        return left;
                    }

                    return _engine.GetValue(EvaluateExpression(logicalExpression.Right));

                case LogicalOperator.LogicalOr:
                    if (TypeConverter.ToBoolean(left))
                    {
                        return left;
                    }

                    return _engine.GetValue(EvaluateExpression(logicalExpression.Right));

                default:
                    throw new NotImplementedException();
            }
        }
 public ExpressionContext(JScriptBuilder builder, LogicalExpression e)
     : this(builder)
 {
     _op = OperatorInfo.GetLogical(e.Operator);
     Enter();
 }
Example #3
0
 private void EmitLogicalExpression(LogicalExpression e)
 {
     using (var ec = new ExpressionContext(this, e))
     {
         Emit(e.Left);
         Write(" " + ec.Token + " ");
         Emit(e.Right);
     }
 }