Ejemplo n.º 1
0
 protected IPrimitiveToken EvaluateOperation(IPrimitiveToken x, IPrimitiveToken y, Tokens o)
 {
     switch(o) {
       case Tokens.EQ:
     return new BooleanToken(x.CompareTo(y) == 0);
       case Tokens.NEQ:
     return new BooleanToken(x.CompareTo(y) != 0);
       case Tokens.GT:
     return new BooleanToken(x.CompareTo(y) > 0);
       case Tokens.GEQ:
     return new BooleanToken(x.CompareTo(y) >= 0);
       case Tokens.LT:
     return new BooleanToken(x.CompareTo(y) < 0);
       case Tokens.LEQ:
     return new BooleanToken(x.CompareTo(y) <= 0);
       case Tokens.PLUS:
     return new NumberToken(x.ToDouble() + y.ToDouble());
       case Tokens.MINUS:
     return new NumberToken(x.ToDouble() - y.ToDouble());
       case Tokens.MULT:
     return new NumberToken(x.ToDouble() * y.ToDouble());
       case Tokens.DIV:
     return new NumberToken(x.ToDouble() / y.ToDouble());
       case Tokens.EXP:
     return new NumberToken(Math.Pow(x.ToDouble(), y.ToDouble()));
       case Tokens.CONCAT:
     return new StringToken(x.ToString() + y.ToString());
       default:
     throw new ArgumentException("Unknown Operator");
       }
 }
Ejemplo n.º 2
0
 protected IPrimitiveToken EvaluateOperation(IPrimitiveToken x, Tokens o)
 {
     switch(o) {
       case Tokens.PERCENT:
     return new NumberToken(x.ToDouble() * 0.01);
       case Tokens.UMINUS:
     return new NumberToken(x.ToDouble() * -1);
       default:
     throw new ArgumentException("Unknown Operator");
       }
 }
Ejemplo n.º 3
0
        EvaluateOperation(IPrimitiveToken x, Tokens o)
        {
            switch (o)
            {
            case Tokens.PERCENT:
                return(new NumberToken(x.ToDouble() * 0.01));

            case Tokens.UMINUS:
                return(new NumberToken(x.ToDouble() * -1));

            default:
                throw new ArgumentException("Unknown Operator");
            }
        }
Ejemplo n.º 4
0
        CompareTo(object obj)
        {
            if (obj is IPrimitiveToken)
            {
                IPrimitiveToken pToken = (IPrimitiveToken)obj;
                switch (pToken.Type)
                {
                case PrimitiveType.Null:
                case PrimitiveType.Number:
                    return(_value.CompareTo(pToken.ToDouble()));

                case PrimitiveType.Boolean:
                case PrimitiveType.String:
                    return(-1);
                }
            }
            throw new ArgumentException();
        }
Ejemplo n.º 5
0
        EvaluateOperation(IPrimitiveToken x, IPrimitiveToken y, Tokens o)
        {
            switch (o)
            {
            case Tokens.EQ:
                return(new BooleanToken(x.CompareTo(y) == 0));

            case Tokens.NEQ:
                return(new BooleanToken(x.CompareTo(y) != 0));

            case Tokens.GT:
                return(new BooleanToken(x.CompareTo(y) > 0));

            case Tokens.GEQ:
                return(new BooleanToken(x.CompareTo(y) >= 0));

            case Tokens.LT:
                return(new BooleanToken(x.CompareTo(y) < 0));

            case Tokens.LEQ:
                return(new BooleanToken(x.CompareTo(y) <= 0));

            case Tokens.PLUS:
                return(new NumberToken(x.ToDouble() + y.ToDouble()));

            case Tokens.MINUS:
                return(new NumberToken(x.ToDouble() - y.ToDouble()));

            case Tokens.MULT:
                return(new NumberToken(x.ToDouble() * y.ToDouble()));

            case Tokens.DIV:
                return(new NumberToken(x.ToDouble() / y.ToDouble()));

            case Tokens.EXP:
                return(new NumberToken(Math.Pow(x.ToDouble(), y.ToDouble())));

            case Tokens.CONCAT:
                return(new StringToken(x.ToString() + y.ToString()));

            default:
                throw new ArgumentException("Unknown Operator");
            }
        }