public NumberConst GetResult(IVariableLinker vl)
        {
            switch (OP)
            {
            case Operator.Plus:
                return(A.GetResult(vl) + B.GetResult(vl));

            case Operator.Minus:
                return(A.GetResult(vl) - B.GetResult(vl));

            case Operator.Multiply:
                return(A.GetResult(vl) * B.GetResult(vl));

            case Operator.Divide:
                return(A.GetResult(vl) / B.GetResult(vl));

            case Operator.ExactlyDivide:
                return(B.GetResult(vl).ReverseExactlyDivide(A.GetResult(vl)));

            case Operator.Remainder:
                return(A.GetResult(vl) % B.GetResult(vl));

            case Operator.PlusOne:
                return(A.GetResult(vl) + new LongConst(1));

            case Operator.MinusOne:
                return(A.GetResult(vl) - new LongConst(1));

            default:
                throw new ArithmeticException();
            }
        }
Exemple #2
0
        public BooleanConst GetResult(IVariableLinker vl)
        {
            switch (OP)
            {
            case Operator.EqualTo:
                return(A.GetObject(vl) == B.GetObject(vl));

            case Operator.NotEqualTo:
                return(A.GetObject(vl) != B.GetObject(vl));

            case Operator.GreaterThan:
                return(A.GetObject(vl) > B.GetObject(vl));

            case Operator.GreaterThanOrEqualTo:
                return(A.GetObject(vl) >= B.GetObject(vl));

            case Operator.LessThan:
                return(A.GetObject(vl) < B.GetObject(vl));

            case Operator.LessThanOrEqualTo:
                return(A.GetObject(vl) <= B.GetObject(vl));

            default:
                throw new ArithmeticException();
            }
        }
Exemple #3
0
        public override List <ObjectConst> Random(IVariableLinker vl)
        {
            List <ObjectConst> result = new List <ObjectConst>();

            for (int i = 0; i < Units.Count; i++)
            {
                result.Add(Units[i].Random(vl));
            }
            return(result);
        }
Exemple #4
0
        public StringConst GetResult(IVariableLinker vl)
        {
            switch (OP)
            {
            case Operator.Concat:
                return(A.GetResult(vl) + B.GetResult(vl));

            default:
                throw new ArithmeticException();
            }
        }
Exemple #5
0
 public override int Validate(List <ObjectConst> thing, int startIndex, IVariableLinker vl)
 {
     if (startIndex + Units.Count > thing.Count)
     {
         return(-1);
     }
     for (int i = 0; i < Units.Count; i++)
     {
         if (!Units[i].Compare(thing[startIndex + i], vl))
         {
             return(-1);
         }
     }
     return(startIndex + Units.Count);
 }
        public BooleanConst GetResult(IVariableLinker vl)
        {
            switch (OP)
            {
            case Operator.Or:
                return(A.GetResult(vl) || B.GetResult(vl));

            case Operator.And:
                return(A.GetResult(vl) && B.GetResult(vl));

            case Operator.Not:
                return(!A.GetResult(vl));

            default:
                throw new ArithmeticException();
            }
        }
 public override ObjectConst GetObject(IVariableLinker vl)
 => GetResult(vl);
Exemple #8
0
 public abstract ObjectConst Random(IVariableLinker vl          = null);
Exemple #9
0
 public abstract bool Compare(ObjectConst b, IVariableLinker vl = null);
Exemple #10
0
 public override NumberConst GetResult(IVariableLinker vl)
 => vl.GetValue(this) as NumberConst;
Exemple #11
0
 public abstract ObjectConst GetObject(IVariableLinker vl);
Exemple #12
0
 public abstract List <ObjectConst> Random(IVariableLinker vl          = null);
Exemple #13
0
 public abstract int Validate(List <ObjectConst> thing, int startIndex = 0, IVariableLinker vl = null);
Exemple #14
0
 public abstract NumberConst GetResult(IVariableLinker vl);
Exemple #15
0
 public StringConst GetResult(IVariableLinker vl)
 => vl.GetValue(this) as StringConst;
Exemple #16
0
 public BooleanConst GetResult(IVariableLinker vl)
 => vl.GetValue(this) as BooleanConst;