Package org.elegant.aash.comparator.parsing.expr

Examples of org.elegant.aash.comparator.parsing.expr.Expression


      throw new ParsingException(stream, stream.syntaxError("dotted expression expected"));
    }
    DottedExpression expr = new DottedExpression(sVarName);
    stream.ignoreBlanks();
    if (stream.isEqualTo('[')) {
      Expression indexExpr = parseExpression(stream);
      stream.ignoreBlanks();
      if (!stream.isEqualTo(']')) {
        throw new ParsingException(stream, stream.syntaxError("']' expected"));
      }
      expr.setIndex(indexExpr);
View Full Code Here


  private static Expression parseExpression(ParsingTools stream) throws IOException {
    return parseBooleanExpression(stream);
  }

  private static Expression parseBooleanExpression(ParsingTools stream) throws IOException {
    Expression expr = parseComparisonExpression(stream);
    stream.ignoreBlanks();
    while (stream.lookAhead('&') || stream.lookAhead('|')) {
      char cOp = (char) stream.readChar();
      Expression right = parseComparisonExpression(stream);
      expr = new BooleanExpression(expr, cOp, right);
    }
    return expr;
  }
View Full Code Here

    }
    return expr;
  }

  private static Expression parseComparisonExpression(ParsingTools stream) throws IOException {
    Expression expr = parseArithmeticExpression(stream);
    stream.ignoreBlanks();
    char cOp = '\0';
    if (stream.isEqualTo("<=")) {
      cOp = 'i';
    } else if (stream.isEqualTo(">=")) {
      cOp = 's';
    } else if (stream.isEqualTo("==")) {
      cOp = '=';
    } else if (stream.isEqualTo("!=")) {
      cOp = '!';
    } else if (stream.isEqualTo("<")) {
      cOp = '<';
    } else if (stream.isEqualTo(">")) {
      cOp = '>';
    } else if (stream.isEqualToIdentifier("in")) {
      cOp = 'E';
    }
    if (cOp != '\0') {
      Expression right = parseArithmeticExpression(stream);
      expr = new ArithmeticExpression(expr, cOp, right);
    }
    return expr;
  }
View Full Code Here

  private static Expression parseArithmeticExpression(ParsingTools stream) throws IOException {
    return parseSumExpression(stream);
  }

  private static Expression parseSumExpression(ParsingTools stream) throws IOException {
    Expression expr = parseMultExpression(stream);
    stream.ignoreBlanks();
    while (stream.lookAhead('+') || stream.lookAhead('-')) {
      char cOp = (char) stream.readChar();
      Expression right = parseMultExpression(stream);
      expr = new ArithmeticExpression(expr, cOp, right);
    }
    return expr;
  }
View Full Code Here

    }
    return expr;
  }

  private static Expression parseMultExpression(ParsingTools stream) throws IOException {
    Expression expr = parseLiteralExpression(stream);
    stream.ignoreBlanks();
    while (stream.lookAhead('*') || stream.lookAhead('/')) {
      char cOp = (char) stream.readChar();
      Expression right = parseLiteralExpression(stream);
      expr = new ArithmeticExpression(expr, cOp, right);
    }
    return expr;
  }
View Full Code Here

  }

  private static Expression parseLiteralExpression(ParsingTools stream) throws IOException {
    stream.ignoreBlanks();
    if (stream.isEqualTo('(')) {
      Expression expr = parseExpression(stream);
      stream.ignoreBlanks();
      if (!stream.isEqualTo(')')) {
        throw new ParsingException(stream, stream.syntaxError("')' expected"));
      }
      return expr;
    } else if (stream.isEqualTo('!')) {
      Expression expr = parseLiteralExpression(stream);
      return new NotExpression(expr);
    } else if (stream.isEqualTo('*')) {
      return new StarLiteral();
    } else if (stream.isEqualTo('[')) {
      ArrayExpression expr = new ArrayExpression();
      stream.ignoreBlanks();
      if (!stream.isEqualTo(']')) {
        Expression item = parseExpression(stream);
        expr.addItem(item);
        stream.ignoreBlanks();
        while (stream.isEqualTo(',')) {
          item = parseExpression(stream);
          expr.addItem(item);
View Full Code Here

  private static Expression parseIntermediateFunctionCall(ParsingTools stream, String sFunctionName) throws IOException {
    FunctionCallExpression expr = new FunctionCallExpression(sFunctionName);
    stream.ignoreBlanks();
    if (!stream.isEqualTo(')')) {
      Expression param = parseExpression(stream);
      expr.addParameter(param);
      stream.ignoreBlanks();
      while (stream.isEqualTo(',')) {
        param = parseExpression(stream);
        expr.addParameter(param);
View Full Code Here

TOP

Related Classes of org.elegant.aash.comparator.parsing.expr.Expression

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.