public IValue interpret(IValue lval, IValue rval) { if (lval is BooleanValue && rval is BooleanValue) { return(BooleanValue.ValueOf(((BooleanValue)lval).Value || ((BooleanValue)rval).Value)); } else { throw new SyntaxError("Illegal: " + lval.GetType().Name + " + " + rval.GetType().Name); } }
public override IValue ConvertCSharpValueToIValue(Context context, Object value) { if (value is bool) { return(BooleanValue.ValueOf((bool)value)); } else if (value is bool?) { return(BooleanValue.ValueOf(((bool?)value).Value)); } else { return((IValue)value); // TODO for now } }
public IValue interpret(Context context, IValue lval, IValue rval) { bool equal = false; switch (oper) { case EqOp.IS: equal = lval == rval; break; case EqOp.IS_NOT: equal = lval != rval; break; case EqOp.IS_A: equal = isA(context, lval, rval); break; case EqOp.IS_NOT_A: equal = !isA(context, lval, rval); break; case EqOp.EQUALS: equal = lval.Equals(context, rval); break; case EqOp.NOT_EQUALS: equal = !lval.Equals(context, rval); break; case EqOp.CONTAINS: equal = lval.Contains(context, rval); break; case EqOp.NOT_CONTAINS: equal = !lval.Contains(context, rval); break; case EqOp.ROUGHLY: equal = lval.Roughly(context, (IValue)rval); break; } return(BooleanValue.ValueOf(equal)); }
private BooleanValue compare(Context context, IValue lval, IValue rval) { Int32 cmp = lval.CompareTo(context, rval); switch (oper) { case CmpOp.GT: return(BooleanValue.ValueOf(cmp > 0)); case CmpOp.LT: return(BooleanValue.ValueOf(cmp < 0)); case CmpOp.GTE: return(BooleanValue.ValueOf(cmp >= 0)); case CmpOp.LTE: return(BooleanValue.ValueOf(cmp <= 0)); default: throw new SyntaxError("Illegal compare operand: " + oper.ToString()); } }