/** * 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]; }
/** 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$ } }
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(); }
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))); }
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; } }
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); } }