Esempio n. 1
0
 protected override MathStatement Mult(Relation other)
 {
     return(other switch
     {
         EqualsOp eo => EqualsOp.Create(this * eo.Left, this * eo.Right),
         _ => throw new NotImplementedException()
     });
 public static MathStatement Create(MathStatement left, MathStatement right) => (left, right) switch
 {
     (Expr el, Expr er) => Create(el, er),
     (Expr el, EqualsOp eor) => EqualsOp.Create(Create(el, eor.Left), Create(el, eor.Right)),
     (EqualsOp eol, EqualsOp eor) => EqualsOp.Create(Create(eol.Left, eor.Left), Create(eol.Right, eor.Right)),
     (EqualsOp eol, Expr er) => EqualsOp.Create(Create(eol.Left, er), Create(eol.Right, er)),
     _ => throw new NotImplementedException()
 };
Esempio n. 3
0
 public static MathStatement Create(MathStatement left, MathStatement right) => (left, right) switch
 {
     (Expr el, Expr er) => Create(el, er),
     (Expr el, EqualsOp eor) => throw new InvalidOperationException($"expression raised to Equality operator."),
           (EqualsOp eol, EqualsOp eor) => EqualsOp.Create(Create(eol.Left, eor.Left), Create(eol.Right, eor.Right)),
           (EqualsOp eol, Expr er) => EqualsOp.Create(Create(eol.Left, er), Create(eol.Right, er)),
           _ => throw new NotImplementedException()
 };