public static string String(this YololBinaryOp op) { switch (op) { case YololBinaryOp.Add: return("+"); case YololBinaryOp.Subtract: return("-"); case YololBinaryOp.Multiply: return("*"); case YololBinaryOp.Divide: return("/"); case YololBinaryOp.Modulo: return("%"); case YololBinaryOp.Exponent: return("^"); case YololBinaryOp.LessThan: return("<"); case YololBinaryOp.GreaterThan: return(">"); case YololBinaryOp.LessThanEqualTo: return("<="); case YololBinaryOp.GreaterThanEqualTo: return(">="); case YololBinaryOp.NotEqualTo: return("!="); case YololBinaryOp.EqualTo: return("=="); default: throw new ArgumentOutOfRangeException(nameof(op), op, null); } }
public CompoundAssignment(VariableName var, YololBinaryOp op, BaseExpression rhs) : base(var, BaseExpression.MakeBinary(op, new VariableExpression(var), rhs)) { _var = var; _op = op; _rhs = rhs; }
public BinaryOp(YololBinaryOp op, Guid id, IDataFlowGraphExpressionNode left, IDataFlowGraphExpressionNode right) { Op = op; Id = id; _inputs[0] = left; _inputs[1] = right; }
private BinaryOp VisitBinary(BaseBinaryExpression bin, YololBinaryOp binop) { var l = Visit(bin.Left); var r = Visit(bin.Right); var op = new BinaryOp(binop, Guid.NewGuid(), l, r); _dataFlowGraph._ops.Add(op); return(op); }
public static BaseExpression MakeBinary(YololBinaryOp operand, BaseExpression lhs, BaseExpression rhs) { switch (operand) { case YololBinaryOp.Add: return(new AddExpression(lhs, rhs)); case YololBinaryOp.Subtract: return(new SubtractExpression(lhs, rhs)); case YololBinaryOp.Multiply: return(new MultiplyExpression(lhs, rhs)); case YololBinaryOp.Divide: return(new DivideExpression(lhs, rhs)); case YololBinaryOp.Modulo: return(new ModuloExpression(lhs, rhs)); case YololBinaryOp.Exponent: return(new Exponent(lhs, rhs)); case YololBinaryOp.LessThan: return(new LessThanExpression(lhs, rhs)); case YololBinaryOp.GreaterThan: return(new GreaterThanExpression(lhs, rhs)); case YololBinaryOp.LessThanEqualTo: return(new LessThanEqualToExpression(lhs, rhs)); case YololBinaryOp.GreaterThanEqualTo: return(new GreaterThanEqualToExpression(lhs, rhs)); case YololBinaryOp.NotEqualTo: return(new NotEqualToExpression(lhs, rhs)); case YololBinaryOp.EqualTo: return(new EqualTo(lhs, rhs)); //ncrunch: no coverage start default: throw new ArgumentOutOfRangeException(nameof(operand), operand, null); //ncrunch: no coverage end } }
public static BaseBinaryExpression ToExpression(this YololBinaryOp op, BaseExpression left, BaseExpression right) { return(op switch { YololBinaryOp.Add => new Add(left, right), YololBinaryOp.Subtract => new Subtract(left, right), YololBinaryOp.Multiply => new Multiply(left, right), YololBinaryOp.Divide => new Divide(left, right), YololBinaryOp.Modulo => new Modulo(left, right), YololBinaryOp.Exponent => new Exponent(left, right), YololBinaryOp.LessThan => new LessThan(left, right), YololBinaryOp.GreaterThan => new GreaterThan(left, right), YololBinaryOp.LessThanEqualTo => new LessThanEqualTo(left, right), YololBinaryOp.GreaterThanEqualTo => new GreaterThanEqualTo(left, right), YololBinaryOp.NotEqualTo => new NotEqualTo(left, right), YololBinaryOp.EqualTo => new EqualTo(left, right), YololBinaryOp.And => new And(left, right), YololBinaryOp.Or => new Or(left, right), _ => throw new ArgumentOutOfRangeException(nameof(op), op, null) });
[NotNull] public static BaseBinaryExpression ToExpression(this YololBinaryOp op, [NotNull] BaseExpression left, [NotNull] BaseExpression right) { switch (op) { case YololBinaryOp.Add: return(new Add(left, right)); case YololBinaryOp.Subtract: return(new Subtract(left, right)); case YololBinaryOp.Multiply: return(new Multiply(left, right)); case YololBinaryOp.Divide: return(new Divide(left, right)); case YololBinaryOp.Modulo: return(new Modulo(left, right)); case YololBinaryOp.Exponent: return(new Exponent(left, right)); case YololBinaryOp.LessThan: return(new LessThan(left, right)); case YololBinaryOp.GreaterThan: return(new GreaterThan(left, right)); case YololBinaryOp.LessThanEqualTo: return(new LessThanEqualTo(left, right)); case YololBinaryOp.GreaterThanEqualTo: return(new GreaterThanEqualTo(left, right)); case YololBinaryOp.NotEqualTo: return(new NotEqualTo(left, right)); case YololBinaryOp.EqualTo: return(new EqualTo(left, right)); case YololBinaryOp.And: return(new And(left, right)); case YololBinaryOp.Or: return(new Or(left, right)); //ncrunch: no coverage start default: throw new ArgumentOutOfRangeException(nameof(op), op, null); //ncrunch: no coverage end } }
[NotNull] public static BaseExpression Create(YololBinaryOp op, [NotNull] BaseExpression lhs, [NotNull] BaseExpression rhs) { return(op.ToExpression(lhs, rhs)); }
public CompoundAssignment(VariableName variable, YololBinaryOp op, [NotNull] BaseExpression expression) : base(variable, op.ToExpression(new Variable(variable), expression)) { Op = op; Expression = expression; }
[NotNull] private BinaryOp VisitBinary([NotNull] BaseBinaryExpression bin, YololBinaryOp binop) { var l = Visit(bin.Left); var r = Visit(bin.Right); var op = new BinaryOp(binop, Guid.NewGuid(), (IDataFlowGraphExpressionNode)l, (IDataFlowGraphExpressionNode)r); _dataFlowGraph._ops.Add(op); return(op); }