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