Package org.springframework.expression.spel.ast

Examples of org.springframework.expression.spel.ast.SpelNodeImpl


  //constructor 
    //:  ('new' qualifiedId LPAREN) => 'new' qualifiedId ctorArgs -> ^(CONSTRUCTOR qualifiedId ctorArgs)
  private boolean maybeEatConstructorReference() {
    if (peekIdentifierToken("new")) {
      Token newToken = nextToken();
      SpelNodeImpl possiblyQualifiedConstructorName = eatPossiblyQualifiedId(true);
      List<SpelNodeImpl> nodes = new ArrayList<SpelNodeImpl>();
      nodes.add(possiblyQualifiedConstructorName);
      eatConstructorArgs(nodes);
      push(new ConstructorReference(toPos(newToken),nodes.toArray(new SpelNodeImpl[nodes.size()]))); // TODO  correct end position?
      return true;
View Full Code Here


  //parenExpr : LPAREN! expression RPAREN!;
  private boolean maybeEatParenExpression() {
    if (peekToken(TokenKind.LPAREN)) {
      nextToken();
      SpelNodeImpl expr = eatExpression();
      eatToken(TokenKind.RPAREN);
      push(expr);
      return true;
    } else {
      return false;
View Full Code Here

      tokenizer.process();
      tokenStream = tokenizer.getTokens();
      tokenStreamLength = tokenStream.size();
      tokenStreamPointer = 0;
      constructedNodes.clear();
      SpelNodeImpl ast = eatExpression();
      if (moreTokens()) {
        throw new SpelParseException(peekToken().startpos,SpelMessage.MORE_INPUT,toString(nextToken()));
      }
      Assert.isTrue(constructedNodes.isEmpty());
      return new SpelExpression(expressionString, ast, configuration)
View Full Code Here

  //      ( (ASSIGN^ logicalOrExpression)
  //      | (DEFAULT^ logicalOrExpression)
  //      | (QMARK^ expression COLON! expression)
  //      | (ELVIS^ expression))?;
  private SpelNodeImpl eatExpression() {
    SpelNodeImpl expr = eatLogicalOrExpression();
    if (moreTokens()) {
      Token t = peekToken();
      if (t.kind==TokenKind.ASSIGN) { // a=b
        nextToken();
        SpelNodeImpl assignedValue = eatLogicalOrExpression();
        return new Assign(toPos(t),expr,assignedValue);
      } else if (t.kind==TokenKind.ELVIS) { // a?:b (a if it isn't null, otherwise b)
        nextToken(); // elvis has left the building
        SpelNodeImpl valueIfNull = eatExpression();
        return new Elvis(toPos(t),expr,valueIfNull);
      } else if (t.kind==TokenKind.QMARK) { // a?b:c
        nextToken();
        SpelNodeImpl ifTrueExprValue = eatExpression()
        eatToken(TokenKind.COLON);
        SpelNodeImpl ifFalseExprValue = eatExpression()
        return new Ternary(toPos(t),expr,ifTrueExprValue,ifFalseExprValue);
      }
    }
    return expr;
  }
View Full Code Here

    return expr;
  }
                         
  //logicalOrExpression : logicalAndExpression (OR^ logicalAndExpression)*;
  private SpelNodeImpl eatLogicalOrExpression() {
    SpelNodeImpl expr = eatLogicalAndExpression();
    while (peekIdentifierToken("or")) {
      Token t = nextToken(); //consume OR
      SpelNodeImpl rhExpr = eatLogicalAndExpression();
      checkRightOperand(t,rhExpr);
      expr = new OpOr(toPos(t),expr,rhExpr);
    }
    return expr;
  }
View Full Code Here

      tokenizer.process();
      tokenStream = tokenizer.getTokens();
      tokenStreamLength = tokenStream.size();
      tokenStreamPointer = 0;
      constructedNodes.clear();
      SpelNodeImpl ast = eatExpression();
      if (moreTokens()) {
        throw new SpelParseException(peekToken().startpos,SpelMessage.MORE_INPUT,toString(nextToken()));
      }
      Assert.isTrue(constructedNodes.isEmpty());
      return new SpelExpression(expressionString, ast, configuration)
View Full Code Here

  //      ( (ASSIGN^ logicalOrExpression)
  //      | (DEFAULT^ logicalOrExpression)
  //      | (QMARK^ expression COLON! expression)
  //      | (ELVIS^ expression))?;
  private SpelNodeImpl eatExpression() {
    SpelNodeImpl expr = eatLogicalOrExpression();
    if (moreTokens()) {
      Token t = peekToken();
      if (t.kind==TokenKind.ASSIGN) { // a=b
        if (expr==null) {
        expr = new NullLiteral(toPos(t.startpos-1,t.endpos-1));
      }
        nextToken();
        SpelNodeImpl assignedValue = eatLogicalOrExpression();
        return new Assign(toPos(t),expr,assignedValue);
      } else if (t.kind==TokenKind.ELVIS) { // a?:b (a if it isn't null, otherwise b)
        if (expr==null) {
          expr = new NullLiteral(toPos(t.startpos-1,t.endpos-2));
        }
        nextToken(); // elvis has left the building
        SpelNodeImpl valueIfNull = eatExpression();
        if (valueIfNull==null) {
          valueIfNull = new NullLiteral(toPos(t.startpos+1,t.endpos+1));
        }
        return new Elvis(toPos(t),expr,valueIfNull);
      } else if (t.kind==TokenKind.QMARK) { // a?b:c
        if (expr==null) {
          expr = new NullLiteral(toPos(t.startpos-1,t.endpos-1));
        }
        nextToken();
        SpelNodeImpl ifTrueExprValue = eatExpression()
        eatToken(TokenKind.COLON);
        SpelNodeImpl ifFalseExprValue = eatExpression()
        return new Ternary(toPos(t),expr,ifTrueExprValue,ifFalseExprValue);
      }
    }
    return expr;
  }
View Full Code Here

    return expr;
  }
                         
  //logicalOrExpression : logicalAndExpression (OR^ logicalAndExpression)*;
  private SpelNodeImpl eatLogicalOrExpression() {
    SpelNodeImpl expr = eatLogicalAndExpression();
    while (peekIdentifierToken("or")) {
      Token t = nextToken(); //consume OR
      SpelNodeImpl rhExpr = eatLogicalAndExpression();
      checkRightOperand(t,rhExpr);
      expr = new OpOr(toPos(t),expr,rhExpr);
    }
    return expr;
  }
View Full Code Here

    return expr;
  }

  // logicalAndExpression : relationalExpression (AND^ relationalExpression)*;
  private SpelNodeImpl eatLogicalAndExpression() {
    SpelNodeImpl expr = eatRelationalExpression();
    while (peekIdentifierToken("and")) {
      Token t = nextToken();// consume 'AND'
      SpelNodeImpl rhExpr = eatRelationalExpression();
      checkRightOperand(t,rhExpr);
      expr = new OpAnd(toPos(t),expr,rhExpr);
    }
    return expr;
  }
View Full Code Here

    return expr;
  }
 
  // relationalExpression : sumExpression (relationalOperator^ sumExpression)?;
  private SpelNodeImpl eatRelationalExpression() {
    SpelNodeImpl expr = eatSumExpression();
    Token relationalOperatorToken = maybeEatRelationalOperator();
    if (relationalOperatorToken != null) {
      Token t = nextToken(); //consume relational operator token
      SpelNodeImpl rhExpr = eatSumExpression();
      checkRightOperand(t,rhExpr);
      TokenKind tk = relationalOperatorToken.kind;
      if (relationalOperatorToken.isNumericRelationalOperator()) {
        int pos = toPos(t);
        if (tk==TokenKind.GT) {
View Full Code Here

TOP

Related Classes of org.springframework.expression.spel.ast.SpelNodeImpl

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.