コード例 #1
0
ファイル: YololBinaryOp.cs プロジェクト: Antr0py/Yolol
        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);
            }
        }
コード例 #2
0
ファイル: CompoundAssignment.cs プロジェクト: Antr0py/Yolol
 public CompoundAssignment(VariableName var, YololBinaryOp op, BaseExpression rhs)
     : base(var, BaseExpression.MakeBinary(op, new VariableExpression(var), rhs))
 {
     _var = var;
     _op  = op;
     _rhs = rhs;
 }
コード例 #3
0
ファイル: DataFlowGraph.cs プロジェクト: martindevans/Yolol
            public BinaryOp(YololBinaryOp op, Guid id, IDataFlowGraphExpressionNode left, IDataFlowGraphExpressionNode right)
            {
                Op = op;
                Id = id;

                _inputs[0] = left;
                _inputs[1] = right;
            }
コード例 #4
0
ファイル: DataFlowGraph.cs プロジェクト: martindevans/Yolol
            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);
            }
コード例 #5
0
ファイル: BaseExpression.cs プロジェクト: Antr0py/Yolol
        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
            }
        }
コード例 #6
0
 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)
     });
コード例 #7
0
ファイル: YololBinaryOp.cs プロジェクト: thomasio101/Yolol
        [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
            }
        }
コード例 #8
0
 [NotNull] public static BaseExpression Create(YololBinaryOp op, [NotNull] BaseExpression lhs, [NotNull] BaseExpression rhs)
 {
     return(op.ToExpression(lhs, rhs));
 }
コード例 #9
0
 public CompoundAssignment(VariableName variable, YololBinaryOp op, [NotNull] BaseExpression expression)
     : base(variable, op.ToExpression(new Variable(variable), expression))
 {
     Op         = op;
     Expression = expression;
 }
コード例 #10
0
ファイル: DataFlowGraph.cs プロジェクト: Chronojam/Yolol
            [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);
            }