/** {@inheritDoc} */ public Iterator<Operator<Term>> traverse(Clause clause, boolean reverse) { /*log.fine("Traversing clause " + clause.toString());*/ Functor head = clause.getHead(); Functor[] body = clause.getBody(); Queue<Operator<Term>> queue = (!reverse) ? new StackQueue<Operator<Term>>() : new LinkedList<Operator<Term>>(); // For the head functor, set the top-level flag, set in head context. if (head != null) { head.setReversable(createHeadOperator(head, clause)); head.setTermTraverser(this); queue.offer(head); } // For the body functors, set the top-level flag, clear in head context. if (body != null) { for (int i = leftToRightClauseBodies ? 0 : (body.length - 1); leftToRightClauseBodies ? (i < body.length) : (i >= 0); i = i + (leftToRightClauseBodies ? 1 : -1)) { Functor bodyFunctor = body[i]; bodyFunctor.setReversable(createBodyOperator(bodyFunctor, i, body, clause)); bodyFunctor.setTermTraverser(this); queue.offer(bodyFunctor); } } return queue.iterator(); }
/** {@inheritDoc} */ public Iterator<Operator<Term>> traverse(Clause clause, boolean reverse) { /*log.fine("Traversing clause " + clause.toString());*/ Functor head = clause.getHead(); Functor[] body = clause.getBody(); Queue<Operator<Term>> queue = (!reverse) ? new StackQueue<Operator<Term>>() : new LinkedList<Operator<Term>>(); // For the head functor, set the top-level flag, set in head context. if (head != null) { head.setReversable(createHeadOperator(head, clause)); head.setTermTraverser(this); queue.offer(head); } // For the body functors, set the top-level flag, clear in head context. if (body != null) { for (int i = leftToRightClauseBodies ? 0 : (body.length - 1); leftToRightClauseBodies ? (i < body.length) : (i >= 0); i = i + (leftToRightClauseBodies ? 1 : -1)) { Functor bodyFunctor = body[i]; bodyFunctor.setReversable(createBodyOperator(bodyFunctor, i, body, clause)); bodyFunctor.setTermTraverser(this); queue.offer(bodyFunctor); } } return queue.iterator(); }
/** {@inheritDoc} */ public void visit(Functor functor) { if (traverser.isEnteringContext()) { enterFunctor(functor); } else if (traverser.isLeavingContext()) { leaveFunctor(functor); functor.setTermTraverser(null); } }
/** {@inheritDoc} */ public void visit(Functor functor) { if (traverser.isEnteringContext()) { enterFunctor(functor); } else if (traverser.isLeavingContext()) { leaveFunctor(functor); functor.setTermTraverser(null); } }
/** {@inheritDoc} */ public void visit(Functor functor) { if (isEnteringContext()) { SymbolKey key = currentSymbolTable.getSymbolKey(currentPosition); functor.setSymbolKey(key); /*log.fine(functor.toString(interner, true, false) + " assigned " + key);*/ } else if (isLeavingContext()) { functor.setTermTraverser(null); } if (delegate != null) { delegate.visit(functor); } }
/** {@inheritDoc} */ public void visit(Functor functor) { if (isEnteringContext()) { SymbolKey key = currentSymbolTable.getSymbolKey(currentPosition); functor.setSymbolKey(key); /*log.fine(functor.toString(interner, true, false) + " assigned " + key);*/ } else if (isLeavingContext()) { functor.setTermTraverser(null); } if (delegate != null) { delegate.visit(functor); } }
head.setTermTraverser(this); queue.offer(head); bodyFunctor.setTermTraverser(this); queue.offer(bodyFunctor);
head.setTermTraverser(this); queue.offer(head); bodyFunctor.setTermTraverser(this); queue.offer(bodyFunctor);