Package org.springframework.expression.spel.ast

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


    return expr;
  }

  // powerExpr  : unaryExpression (POWER^ unaryExpression)? (INC || DEC) ;
  private SpelNodeImpl eatPowerIncDecExpression() {
    SpelNodeImpl expr = eatUnaryExpression();
    if (peekToken(TokenKind.POWER)) {
      Token t = nextToken()//consume POWER
      SpelNodeImpl rhExpr = eatUnaryExpression();
      checkRightOperand(t,rhExpr);
      return new OperatorPower(toPos(t), expr, rhExpr);
    }

    if (expr != null && peekToken(TokenKind.INC,TokenKind.DEC)) {
View Full Code Here


  // 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);
      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);
    }
View Full Code Here

  }

  // primaryExpression : startNode (node)? -> ^(EXPRESSION startNode (node)?);
  private SpelNodeImpl eatPrimaryExpression() {
    List<SpelNodeImpl> nodes = new ArrayList<SpelNodeImpl>();
    SpelNodeImpl start = eatStartNode()// always a start node
    nodes.add(start);
    while (maybeEatNode()) {
      nodes.add(pop());
    }
    if (nodes.size() == 1) {
      return nodes.get(0);
    }
    return new CompoundExpression(toPos(start.getStartPosition(),
        nodes.get(nodes.size() - 1).getEndPosition()),
        nodes.toArray(new SpelNodeImpl[nodes.size()]));
  }
View Full Code Here

        nodes.toArray(new SpelNodeImpl[nodes.size()]));
  }

  // node : ((DOT dottedNode) | (SAFE_NAVI dottedNode) | nonDottedNode)+;
  private boolean maybeEatNode() {
    SpelNodeImpl expr = null;
    if (peekToken(TokenKind.DOT,TokenKind.SAFE_NAVI)) {
      expr = eatDottedNode();
    }
    else {
      expr = maybeEatNonDottedNode();
View Full Code Here

      if (!typeName.stringValue().equals("T")) {
        return false;
      }
      nextToken();
      eatToken(TokenKind.LPAREN);
      SpelNodeImpl node = eatPossiblyQualifiedId();
      // dotted qualified id
      // Are there array dimensions?
      int dims = 0;
      while (peekToken(TokenKind.LSQUARE, true)) {
        eatToken(TokenKind.RSQUARE);
View Full Code Here

  private boolean maybeEatProjection(boolean nullSafeNavigation) {
    Token t = peekToken();
    if (!peekToken(TokenKind.PROJECT, true)) {
      return false;
    }
    SpelNodeImpl expr = eatExpression();
    eatToken(TokenKind.RSQUARE);
    this.constructedNodes.push(new Projection(nullSafeNavigation, toPos(t), expr));
    return true;
  }
View Full Code Here

  private boolean maybeEatInlineListOrMap() {
    Token t = peekToken();
    if (!peekToken(TokenKind.LCURLY, true)) {
      return false;
    }
    SpelNodeImpl expr = null;
    Token closingCurly = peekToken();
    if (peekToken(TokenKind.RCURLY, true)) {
      // empty list '{}'
      expr = new InlineList(toPos(t.startPos,closingCurly.endPos));
    }
    else if (peekToken(TokenKind.COLON,true)) {
      closingCurly = eatToken(TokenKind.RCURLY);
      // empty map '{:}'
      expr = new InlineMap(toPos(t.startPos,closingCurly.endPos));
    }
    else {
      SpelNodeImpl firstExpression = eatExpression();
      // Next is either:
      // '}' - end of list
      // ',' - more expressions in this list
      // ':' - this is a map!
     
View Full Code Here

  private boolean maybeEatIndexer() {
    Token t = peekToken();
    if (!peekToken(TokenKind.LSQUARE, true)) {
      return false;
    }
    SpelNodeImpl expr = eatExpression();
    eatToken(TokenKind.RSQUARE);
    this.constructedNodes.push(new Indexer(toPos(t), expr));
    return true;
  }
View Full Code Here

    Token t = peekToken();
    if (!peekSelectToken()) {
      return false;
    }
    nextToken();
    SpelNodeImpl expr = eatExpression();
    if (expr == null) {
      raiseInternalException(toPos(t), SpelMessage.MISSING_SELECTION_EXPRESSION);
    }
    eatToken(TokenKind.RSQUARE);
    if (t.kind == TokenKind.SELECT_FIRST) {
View Full Code Here

  //constructor
    //:  ('new' qualifiedId LPAREN) => 'new' qualifiedId ctorArgs -> ^(CONSTRUCTOR qualifiedId ctorArgs)
  private boolean maybeEatConstructorReference() {
    if (peekIdentifierToken("new")) {
      Token newToken = nextToken();
      SpelNodeImpl possiblyQualifiedConstructorName = eatPossiblyQualifiedId();
      List<SpelNodeImpl> nodes = new ArrayList<SpelNodeImpl>();
      nodes.add(possiblyQualifiedConstructorName);
      if (peekToken(TokenKind.LSQUARE)) {
        // array initializer
        List<SpelNodeImpl> dimensions = new ArrayList<SpelNodeImpl>();
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.