public void add(IFunctionProvider provider) {
providers.add(provider);
}
public Expr evaluate(ExprFunction function) throws ExprException {
IExprFunction f = functions.get(function.getName());
if (f != null)
return f.evaluate(function.getArgs());
for (IFunctionProvider p : providers)
if (p.hasFunction(function))
return p.evaluate(function);