Search in sources :

Example 1 with Minus

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

the class CFMLExpressionInterpreter method _minus.

private Ref _minus(Ref ref) throws PageException {
    // -=
    if (cfml.isCurrent('=')) {
        cfml.next();
        cfml.removeSpace();
        Ref right = assignOp();
        Ref res = preciseMath ? new BigMinus(ref, right, limited) : new Minus(ref, right, limited);
        ref = new Assign(ref, res, limited);
    } else {
        cfml.removeSpace();
        ref = preciseMath ? new BigMinus(ref, modOp(), limited) : new Minus(ref, modOp(), limited);
    }
    return ref;
}
Also used : Ref(lucee.runtime.interpreter.ref.Ref) Assign(lucee.runtime.interpreter.ref.var.Assign) DynAssign(lucee.runtime.interpreter.ref.var.DynAssign) BigMinus(lucee.runtime.interpreter.ref.op.BigMinus) BigMinus(lucee.runtime.interpreter.ref.op.BigMinus) Minus(lucee.runtime.interpreter.ref.op.Minus)

Example 2 with Minus

use of lucee.runtime.interpreter.ref.op.Minus 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)2 BigMinus (lucee.runtime.interpreter.ref.op.BigMinus)2 Minus (lucee.runtime.interpreter.ref.op.Minus)2 Assign (lucee.runtime.interpreter.ref.var.Assign)2 DynAssign (lucee.runtime.interpreter.ref.var.DynAssign)2 Casting (lucee.runtime.interpreter.ref.cast.Casting)1 LNumber (lucee.runtime.interpreter.ref.literal.LNumber)1 BigPlus (lucee.runtime.interpreter.ref.op.BigPlus)1 Negate (lucee.runtime.interpreter.ref.op.Negate)1 Plus (lucee.runtime.interpreter.ref.op.Plus)1