package org.openntf.formula.test; import java.util.List; import org.openntf.formula.ASTNode; import org.openntf.formula.EvaluateException; import org.openntf.formula.FormulaContext; import org.openntf.formula.FormulaParseException; import org.openntf.formula.FormulaParser; import org.openntf.formula.FormulaProvider; import org.openntf.formula.Formulas; public class TestServiceLoader { public static void main(final String[] args) throws FormulaParseException, EvaluateException { final FormulaParser p = Formulas.getParser(); p.setIncludeProvider(new FormulaProvider<ASTNode>() { @Override public ASTNode get(final String key) { try { if ("demofunc".equals(key)) { return p.parse("@listSupportedFunctions"); } if ("ackermann".equals(key)) { return p.parse("@Function(@Ack(n;m)) := @if( n = 0; m+1; m=0; @Ack(n-1;1); @Ack(n-1;@Ack(n;m-1))); @Ack(1;1)"); } } catch (FormulaParseException e) { e.printStackTrace(); } // TODO Auto-generated method stub return null; } }); ASTNode x = p.parse(System.in, true); FormulaContext ctx = Formulas.createContext(null, p); ctx.setParameterProvider(new FormulaProvider<String>() { @Override public String get(final String key) { return args[Integer.valueOf(key)]; } }); List<Object> ret = x.solve(ctx); System.out.println(ret); } }