private ITripleExpression MulDiv() { ITripleExpression left = Atomic(); while (true) { switch (current) { case State.asterisk: left = new Multiply(left, Atomic()); break; case State.slash: left = new Divide(left, Atomic()); break; case State.mod: left = new Mod(left, Atomic()); break; default: return(left); } } }
private ITripleExpression Shifts() { ITripleExpression left = AddSubt(); while (true) { switch (current) { case State.shiftLeft: left = new ShiftLeft(left, AddSubt()); break; case State.shiftRight: left = new ShiftRight(left, AddSubt()); break; default: return(left); } } }
private ITripleExpression AddSubt() { ITripleExpression left = MulDiv(); while (true) { switch (current) { case State.minus: left = new Subtract(left, MulDiv()); break; case State.plus: left = new Add(left, MulDiv()); break; default: return(left); } } }
public Add(ITripleExpression first, ITripleExpression second) { fOp = first; sOp = second; }
public Subtract(ITripleExpression <T> first, ITripleExpression <T> second, IOperator <T> op) { fOp = first; sOp = second; base.op = op; }
public Square(ITripleExpression value) { this.value = value; }
public ShiftLeft(ITripleExpression first, ITripleExpression second) { fOp = first; sOp = second; }
public CheckedSubtract(ITripleExpression first, ITripleExpression second) { fOp = first; sOp = second; }
public Abs(ITripleExpression <T> value, IOperator <T> op) { this.value = value; this.op = op; }
public BinaryOperator(ITripleExpression <T> first, ITripleExpression <T> second, IOperator <T> op) { fOp = first; sOp = second; this.op = op; }
public Divide(ITripleExpression first, ITripleExpression second) { fOp = first; sOp = second; }
public Abs(ITripleExpression value) { this.value = value; }
public CheckedMultiply(ITripleExpression first, ITripleExpression second) { fOp = first; sOp = second; }
public CheckedNegate(ITripleExpression value) { this.value = value; }
public CheckedSqrt(ITripleExpression value) { this.value = value; }