示例#1
0
  /**
   * Evaluate rate multiplier expression for the given variable values.
   *
   * @param scalarVarNames Names of scalar variables in expression
   * @param scalarVarVals Values of scalar variables in expression
   * @param vectorVarNames Names of vector variables in expression
   * @param vectorVarVals Values of vector variables in expression
   * @param functions
   * @return result of evaluating the expression
   */
  public double evaluate(
      List<String> scalarVarNames,
      int[] scalarVarVals,
      List<String> vectorVarNames,
      List<Double[]> vectorVarVals,
      Map<String, Function> functions) {
    if (visitor == null) {
      // Parse predicate expression
      ANTLRInputStream input = new ANTLRInputStream(expInput.get());
      MASTERGrammarLexer lexer = new MASTERGrammarLexer(input);
      CommonTokenStream tokens = new CommonTokenStream(lexer);
      MASTERGrammarParser parser = new MASTERGrammarParser(tokens);
      ParseTree parseTree = parser.expression();
      visitor = new ExpressionEvaluator(parseTree, scalarVarNames, functions);
    }

    for (int i = 0; i < vectorVarNames.size(); i++)
      visitor.setVectorVar(vectorVarNames.get(i), vectorVarVals.get(i));

    Double[] res = visitor.evaluate(scalarVarVals);
    if (res.length != 1) {
      throw new IllegalArgumentException("Reaction rate multiplier must be scalar!");
    }

    return res[0];
  }
示例#2
0
  /** Test Delegate Method Call */
  public void testCase1() throws Exception {
    ContextA contextA = new ContextA();
    ContextB contextB = new ContextB();

    OOEEContext context = OOEEContextFactory.createOOEEContext();

    context.setParsingContextObject("$", contextA);
    context.setEvaluationContextObject("$", contextA);

    context.setParsingContextObject("#", contextB);
    context.setEvaluationContextObject("#", contextB);

    String expressionStr = "$setValue(\"a\")";
    Expression expression = ExpressionParser.parse(expressionStr, context);
    ExpressionEvaluator.evaluate(expression, context);

    expressionStr = "#setValue(\"b\")";
    expression = ExpressionParser.parse(expressionStr, context);
    ExpressionEvaluator.evaluate(expression, context);

    expressionStr = "$var";
    expression = ExpressionParser.parse(expressionStr, context);
    Object value = ExpressionEvaluator.evaluate(expression, context);
    assertEquals("a", value);

    expressionStr = "#var";
    expression = ExpressionParser.parse(expressionStr, context);
    value = ExpressionEvaluator.evaluate(expression, context);
    assertEquals("b", value);

    SerializeUtil.serializeData(expression);
    SerializeUtil.serializeData(context);
  }
  /**
   * Evaluates the expressions for all the given attributes and pass results up to the parent tag.
   *
   * @throws JspException for exceptions occurred during evaluation.
   */
  private void evaluateExpressions() throws JspException {
    ExpressionEvaluator eval = new ExpressionEvaluator(this, pageContext);

    super.setName(eval.evalString("name", nameExpr)); // $NON-NLS-1$

    if (valueExpr != null) {
      super.setValue(eval.evalString("value", valueExpr)); // $NON-NLS-1$
    }
  }
 /**
  * Evaluates the expressions for all the given attributes and pass results up to the parent tag.
  *
  * @throws JspException for exceptions occurred during evaluation.
  */
 private void evaluateExpressions() throws JspException {
   ExpressionEvaluator eval = new ExpressionEvaluator(this, pageContext);
   if (nameExpr != null) {
     super.setName(eval.evalString("name", nameExpr)); // $NON-NLS-1$
   }
   if (msgExpr != null) {
     super.setMsg(eval.evalString("msg", msgExpr)); // $NON-NLS-1$
   }
   if (defaultvalueExpr != null) {
     super.setDefaultvalue(eval.evalString("defaultvalue", defaultvalueExpr)); // $NON-NLS-1$
   }
 }
示例#5
0
 public String shortDebugDump() {
   if (evaluators == null) {
     return "null evaluators";
   }
   if (evaluators.isEmpty()) {
     return "[]";
   }
   if (evaluators.size() == 1) {
     return evaluators.iterator().next().shortDebugDump();
   }
   StringBuilder sb = new StringBuilder("[");
   for (ExpressionEvaluator<V, D> evaluator : evaluators) {
     sb.append(evaluator.shortDebugDump());
     sb.append(",");
   }
   sb.append("]");
   return sb.toString();
 }
示例#6
0
  public String extractFilename(
      Expression urlInput, ProblemsHandler problemsHandler, Configuration configuration) {
    ExpressionEvaluator expressionEvaluator =
        new ExpressionEvaluator(problemsHandler, configuration);
    Expression urlExpression = expressionEvaluator.evaluate(urlInput);

    if (urlExpression.getType() != ASTCssNodeType.FUNCTION)
      return toJavaFileSeparator(contentToString(urlExpression));

    // this is the only place in the compiler that can interpret the url function
    FunctionExpression function = (FunctionExpression) urlExpression;
    if (!"url".equals(function.getName().toLowerCase())) return null;

    List<Expression> parameters =
        expressionEvaluator.evaluate(function.getParameter()).splitByComma();
    if (parameters.isEmpty()) return null;

    return toJavaFileSeparator(contentToString(parameters.get(0)));
  }
示例#7
0
  public PrismValueDeltaSetTriple<V> evaluate(ExpressionEvaluationContext context)
      throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException {

    ExpressionVariables processedVariables = null;

    try {

      processedVariables =
          processInnerVariables(
              context.getVariables(),
              context.getContextDescription(),
              context.getTask(),
              context.getResult());

      ExpressionEvaluationContext processedParameters = context.shallowClone();
      processedParameters.setVariables(processedVariables);

      for (ExpressionEvaluator<?, ?> evaluator : evaluators) {
        PrismValueDeltaSetTriple<V> outputTriple =
            (PrismValueDeltaSetTriple<V>) evaluator.evaluate(processedParameters);
        if (outputTriple != null) {
          traceSuccess(context, processedVariables, outputTriple);
          return outputTriple;
        }
      }
      traceSuccess(context, processedVariables, null);
      return null;
    } catch (SchemaException ex) {
      traceFailure(context, processedVariables, ex);
      throw ex;
    } catch (ExpressionEvaluationException ex) {
      traceFailure(context, processedVariables, ex);
      throw ex;
    } catch (ObjectNotFoundException ex) {
      traceFailure(context, processedVariables, ex);
      throw ex;
    } catch (RuntimeException ex) {
      traceFailure(context, processedVariables, ex);
      throw ex;
    }
  }
示例#8
0
  public void testCase2() throws Exception {
    ContextA contextA = new ContextA();

    OOEEContext context = OOEEContextFactory.createOOEEContext();

    context.setParsingContextObject("$", contextA);
    context.setEvaluationContextObject("$", contextA);

    String expressionStr = "$setValue(\"a\")";
    Expression expression = ExpressionParser.parse(expressionStr, context);
    ExpressionEvaluator.evaluate(expression, context);

    expressionStr = "$var\"aa\"";
    try {
      expression = ExpressionParser.parse(expressionStr, context);
      fail("no exception happend");
    } catch (Exception e) {
      assertTrue(true);
    }
  }