/** * Evaluates a java expression. * @return The evaluated object. */ public static IParsedExpression parseExpression(String exptxt, String[] imports, ClassLoader classloader) { return parser.parseExpression(exptxt, imports, null, classloader); }
/** * Evaluates a java expression. * @param fetcher Expression parameters can be supplied as value fetcher. * @return The evaluated object. */ public static Object evaluateExpression(String exptxt, String[] imports, IValueFetcher fetcher, ClassLoader classloader) { IParsedExpression exp = parser.parseExpression(exptxt, imports, null, classloader); return exp.getValue(fetcher); }
IParsedExpression pexp = parser.parseExpression(text, null, null, classloader); pexp.getValue(null); lastvalid = true;
/** * Parse an expression in the given scope. * @param expression The expression. * @param language The language or null for default java-like language. * @param state The state. * @param scope The scope. * @return The parsed expression */ public static IParsedExpression parseExpression(String expression, String language, IOAVState state, Object scope) { if(language!=null && !"java".equals(language)) { throw new UnsupportedOperationException("Only java currently supported."); } IExpressionParser exp_parser = new JavaCCExpressionParser(); // Hack!!! Map language to parser somewhere? IParsedExpression pexp = exp_parser.parseExpression(expression, null, null, state.getTypeModel().getClassLoader()); return pexp; }
/** * */ public static Object createExpression(IOAVState state, Object scope, final String expression, final String[] paramnames, final Class[] paramtypes) { // Hack!!! Should be configurable. IExpressionParser exp_parser = new JavaCCExpressionParser(); // Object mcapa = state.getAttributeValue(scope, OAVBDIRuntimeModel.element_has_model); // String[] imports = OAVBDIMetaModel.getImports(state, mcapa); Map params = null; if(paramnames!=null) { params = new HashMap(); for(int i=0; i<paramnames.length; i++) { params.put(paramnames[i], state.getTypeModel().getJavaType(paramtypes[i])); } } IParsedExpression pex = exp_parser.parseExpression(expression, null, params, Thread.currentThread().getContextClassLoader()); return new ExpressionNoModel(state, scope, pex); }
/** * Convert a string value to a type. * @param val The string value to convert. */ public Object convertString(String val, Object context) { Object ret = null; // System.out.println("Found expression: "+val); try { ret = exp_parser.parseExpression((String)val, ((IModelInfo) ((IContext)context).getRootObject()).getAllImports(), null, ((IContext)context).getClassLoader()); } catch(Exception e) { // Quiet mode for suppressing errors (for potential expressions in attributes, e.g. rotation) reportError((IContext)context, e.toString()); } return ret; } }
/** * Create a precompiled expression. * @param expression The expression string. * @return The precompiled expression. */ public IExpression createExpression(String expression, String[] paramnames, Class[] paramtypes) { // Hack!!! Should be configurable. IExpressionParser exp_parser = new JavaCCExpressionParser(); String[] imports = getInterpreter().getModel(rcapa).getAllImports(); Map params = null; if(paramnames!=null) { params = new HashMap(); for(int i=0; i<paramnames.length; i++) { params.put(paramnames[i], state.getTypeModel().getJavaType(paramtypes[i])); } } IParsedExpression pex = exp_parser.parseExpression(expression, imports, params, Thread.currentThread().getContextClassLoader()); return new ExpressionNoModel(state, rcapa, pex); }
ret = exp_parser.parseExpression(value, ((IModelInfo)context.getRootObject()).getAllImports(), null, state.getTypeModel().getClassLoader());