Search in sources :

Example 1 with OpDec

use of org.springframework.expression.spel.ast.OpDec in project spring-framework by spring-projects.

the class InternalSpelExpressionParser method eatUnaryExpression.

// unaryExpression: (PLUS^ | MINUS^ | BANG^ | INC^ | DEC^) unaryExpression | primaryExpression ;
private SpelNodeImpl eatUnaryExpression() {
    if (peekToken(TokenKind.PLUS, TokenKind.MINUS, TokenKind.NOT)) {
        Token t = nextToken();
        SpelNodeImpl expr = eatUnaryExpression();
        if (t.kind == TokenKind.NOT) {
            return new OperatorNot(toPos(t), expr);
        }
        if (t.kind == TokenKind.PLUS) {
            return new OpPlus(toPos(t), expr);
        }
        Assert.isTrue(t.kind == TokenKind.MINUS, "Minus token expected");
        return new OpMinus(toPos(t), expr);
    }
    if (peekToken(TokenKind.INC, TokenKind.DEC)) {
        Token t = nextToken();
        SpelNodeImpl expr = eatUnaryExpression();
        if (t.getKind() == TokenKind.INC) {
            return new OpInc(toPos(t), false, expr);
        }
        return new OpDec(toPos(t), false, expr);
    }
    return eatPrimaryExpression();
}
Also used : OpInc(org.springframework.expression.spel.ast.OpInc) SpelNodeImpl(org.springframework.expression.spel.ast.SpelNodeImpl) OpPlus(org.springframework.expression.spel.ast.OpPlus) OperatorNot(org.springframework.expression.spel.ast.OperatorNot) OpMinus(org.springframework.expression.spel.ast.OpMinus) OpDec(org.springframework.expression.spel.ast.OpDec)

Example 2 with OpDec

use of org.springframework.expression.spel.ast.OpDec in project spring-framework by spring-projects.

the class InternalSpelExpressionParser method eatPowerIncDecExpression.

// powerExpr  : unaryExpression (POWER^ unaryExpression)? (INC || DEC) ;
private SpelNodeImpl eatPowerIncDecExpression() {
    SpelNodeImpl expr = eatUnaryExpression();
    if (peekToken(TokenKind.POWER)) {
        //consume POWER
        Token t = nextToken();
        SpelNodeImpl rhExpr = eatUnaryExpression();
        checkRightOperand(t, rhExpr);
        return new OperatorPower(toPos(t), expr, rhExpr);
    }
    if (expr != null && peekToken(TokenKind.INC, TokenKind.DEC)) {
        //consume INC/DEC
        Token t = nextToken();
        if (t.getKind() == TokenKind.INC) {
            return new OpInc(toPos(t), true, expr);
        }
        return new OpDec(toPos(t), true, expr);
    }
    return expr;
}
Also used : OpInc(org.springframework.expression.spel.ast.OpInc) SpelNodeImpl(org.springframework.expression.spel.ast.SpelNodeImpl) OperatorPower(org.springframework.expression.spel.ast.OperatorPower) OpDec(org.springframework.expression.spel.ast.OpDec)

Aggregations

OpDec (org.springframework.expression.spel.ast.OpDec)2 OpInc (org.springframework.expression.spel.ast.OpInc)2 SpelNodeImpl (org.springframework.expression.spel.ast.SpelNodeImpl)2 OpMinus (org.springframework.expression.spel.ast.OpMinus)1 OpPlus (org.springframework.expression.spel.ast.OpPlus)1 OperatorNot (org.springframework.expression.spel.ast.OperatorNot)1 OperatorPower (org.springframework.expression.spel.ast.OperatorPower)1