Search in sources :

Example 1 with OpAnd

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

the class SpelParserTests method positionalInformation.

@Test
public void positionalInformation() {
    SpelExpression expr = new SpelExpressionParser().parseRaw("true and true or false");
    SpelNode rootAst = expr.getAST();
    OpOr operatorOr = (OpOr) rootAst;
    OpAnd operatorAnd = (OpAnd) operatorOr.getLeftOperand();
    SpelNode rightOrOperand = operatorOr.getRightOperand();
    // check position for final 'false'
    assertEquals(17, rightOrOperand.getStartPosition());
    assertEquals(22, rightOrOperand.getEndPosition());
    // check position for first 'true'
    assertEquals(0, operatorAnd.getLeftOperand().getStartPosition());
    assertEquals(4, operatorAnd.getLeftOperand().getEndPosition());
    // check position for second 'true'
    assertEquals(9, operatorAnd.getRightOperand().getStartPosition());
    assertEquals(13, operatorAnd.getRightOperand().getEndPosition());
    // check position for OperatorAnd
    assertEquals(5, operatorAnd.getStartPosition());
    assertEquals(8, operatorAnd.getEndPosition());
    // check position for OperatorOr
    assertEquals(14, operatorOr.getStartPosition());
    assertEquals(16, operatorOr.getEndPosition());
}
Also used : OpOr(org.springframework.expression.spel.ast.OpOr) OpAnd(org.springframework.expression.spel.ast.OpAnd) SpelNode(org.springframework.expression.spel.SpelNode) Test(org.junit.Test)

Example 2 with OpAnd

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

the class InternalSpelExpressionParser method eatLogicalAndExpression.

// logicalAndExpression : relationalExpression (AND^ relationalExpression)*;
private SpelNodeImpl eatLogicalAndExpression() {
    SpelNodeImpl expr = eatRelationalExpression();
    while (peekIdentifierToken("and") || peekToken(TokenKind.SYMBOLIC_AND)) {
        // consume 'AND'
        Token t = nextToken();
        SpelNodeImpl rhExpr = eatRelationalExpression();
        checkOperands(t, expr, rhExpr);
        expr = new OpAnd(toPos(t), expr, rhExpr);
    }
    return expr;
}
Also used : SpelNodeImpl(org.springframework.expression.spel.ast.SpelNodeImpl) OpAnd(org.springframework.expression.spel.ast.OpAnd)

Aggregations

OpAnd (org.springframework.expression.spel.ast.OpAnd)2 Test (org.junit.Test)1 SpelNode (org.springframework.expression.spel.SpelNode)1 OpOr (org.springframework.expression.spel.ast.OpOr)1 SpelNodeImpl (org.springframework.expression.spel.ast.SpelNodeImpl)1