Search in sources :

Example 1 with Negate

use of lucee.runtime.interpreter.ref.op.Negate in project Lucee by lucee.

the class CFMLExpressionInterpreter method negateMinusOp.

/**
 * Liest die Vordlobe einer Zahl ein
 * @return CFXD Element
 * @throws PageException
 */
private Ref negateMinusOp() throws PageException {
    // And Operation
    if (cfml.forwardIfCurrent('-')) {
        if (cfml.forwardIfCurrent('-')) {
            cfml.removeSpace();
            Ref expr = clip();
            Ref res = preciseMath ? new BigMinus(expr, new LNumber(new Double(1)), limited) : new Minus(expr, new LNumber(new Double(1)), limited);
            return new Assign(expr, res, limited);
        }
        cfml.removeSpace();
        return new Negate(clip(), limited);
    }
    if (cfml.forwardIfCurrent('+')) {
        if (cfml.forwardIfCurrent('+')) {
            cfml.removeSpace();
            Ref expr = clip();
            Ref res = preciseMath ? new BigPlus(expr, new LNumber(new Double(1)), limited) : new Plus(expr, new LNumber(new Double(1)), limited);
            return new Assign(expr, res, limited);
        }
        cfml.removeSpace();
        return new Casting("numeric", CFTypes.TYPE_NUMERIC, clip());
    }
    return clip();
}
Also used : Casting(lucee.runtime.interpreter.ref.cast.Casting) Ref(lucee.runtime.interpreter.ref.Ref) LNumber(lucee.runtime.interpreter.ref.literal.LNumber) BigPlus(lucee.runtime.interpreter.ref.op.BigPlus) Assign(lucee.runtime.interpreter.ref.var.Assign) DynAssign(lucee.runtime.interpreter.ref.var.DynAssign) Negate(lucee.runtime.interpreter.ref.op.Negate) Plus(lucee.runtime.interpreter.ref.op.Plus) BigPlus(lucee.runtime.interpreter.ref.op.BigPlus) BigMinus(lucee.runtime.interpreter.ref.op.BigMinus) BigMinus(lucee.runtime.interpreter.ref.op.BigMinus) Minus(lucee.runtime.interpreter.ref.op.Minus)

Aggregations

Ref (lucee.runtime.interpreter.ref.Ref)1 Casting (lucee.runtime.interpreter.ref.cast.Casting)1 LNumber (lucee.runtime.interpreter.ref.literal.LNumber)1 BigMinus (lucee.runtime.interpreter.ref.op.BigMinus)1 BigPlus (lucee.runtime.interpreter.ref.op.BigPlus)1 Minus (lucee.runtime.interpreter.ref.op.Minus)1 Negate (lucee.runtime.interpreter.ref.op.Negate)1 Plus (lucee.runtime.interpreter.ref.op.Plus)1 Assign (lucee.runtime.interpreter.ref.var.Assign)1 DynAssign (lucee.runtime.interpreter.ref.var.DynAssign)1