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(); }
private void EmitLogicalExpression(LogicalExpression e) { using (var ec = new ExpressionContext(this, e)) { Emit(e.Left); Write(" " + ec.Token + " "); Emit(e.Right); } }