public ATerm oneStepInnermost(ATerm subject) { List<Object> list; // fib(zero) -> suc(zero) list = subject.match(lhs[0]); if (list != null) { return rhs[0]; } // fib(suc(zero)) -> suc(zero) list = subject.match(lhs[1]); if (list != null) { return rhs[1]; } // fib(suc(suc(X))) -> plus(fib(X),fib(suc(X))) list = subject.match(lhs[2]); if (list != null) { final ATerm X = (ATerm) list.get(0); final ATerm X1 = normalize(_factory.makeAppl(fib, X)); final ATerm X2 = normalize(_factory.makeAppl(fib, _factory.makeAppl(suc, X))); return _factory.makeAppl(plus, X1, X2); } // plus(zero,X) -> X list = subject.match(lhs[3]); if (list != null) { return (ATerm) list.get(0); } // plus(suc(X),Y) -> plus(X,suc(Y))) list = subject.match(lhs[4]); if (list != null) { return _factory.make(rhs[4], list); } return fail; }
result = _factory.make("23", list); result = _factory.make("3.14", list); result = _factory.make("[1,2,3]", list); result = _factory.make("GL(\"toto\")", list); result = _factory.make("<int>", list); result = _factory.make("<real>", list); result = _factory.make("<term>", list); list.add(new Integer(3)); list.add(_factory.parse("<abc>")); result = _factory.make("[<term>,2,<int>,3.14,<placeholder>]", list); list.add(_factory.parse("1")); list.add(_factory.parse("[]")); result = _factory.make("[<term>,<list>]", list);
return _factory.make(rhs[ruleNumber], list); if (list != null) { return _factory.make(rhs[ruleNumber], list); } ruleNumber++; if (list != null) { return _factory.make(rhs[ruleNumber], list); } ruleNumber++; list.clear(); list.add(Xp); return _factory.make(rhs[ruleNumber], list); list.add(X); list.add(Yp); return _factory.make(rhs[ruleNumber], list); list.add(Xp); list.add(Y); return _factory.make(rhs[ruleNumber], list);