/** {@inheritDoc} */ public Iterator<Operator<Term>> traverse(Functor functor, boolean reverse) { /*log.fine("Traversing functor " + functor.toString());*/ Queue<Operator<Term>> queue = (!reverse) ? new StackQueue<Operator<Term>>() : new LinkedList<Operator<Term>>(); Term[] arguments = functor.getArguments(); // For a top-level functor clear top-level flag, so that child functors are not taken as top-level. if (arguments != null) { for (int i = leftToRightFunctorArgs ? 0 : (arguments.length - 1); leftToRightFunctorArgs ? (i < arguments.length) : (i >= 0); i = i + (leftToRightFunctorArgs ? 1 : -1)) { Term argument = arguments[i]; argument.setReversable(createTermOperator(argument, i, functor)); argument.setTermTraverser(this); queue.offer(argument); } } return queue.iterator(); }
/** {@inheritDoc} */ public Iterator<Operator<Term>> traverse(Functor functor, boolean reverse) { /*log.fine("Traversing functor " + functor.toString());*/ Queue<Operator<Term>> queue = (!reverse) ? new StackQueue<Operator<Term>>() : new LinkedList<Operator<Term>>(); Term[] arguments = functor.getArguments(); // For a top-level functor clear top-level flag, so that child functors are not taken as top-level. if (arguments != null) { for (int i = leftToRightFunctorArgs ? 0 : (arguments.length - 1); leftToRightFunctorArgs ? (i < arguments.length) : (i >= 0); i = i + (leftToRightFunctorArgs ? 1 : -1)) { Term argument = arguments[i]; argument.setReversable(createTermOperator(argument, i, functor)); argument.setTermTraverser(this); queue.offer(argument); } } return queue.iterator(); }
/** * Sets up the initial context once, at the start of a traversal. * * @param term The term to establish the initial positional traversal context for. */ private void createInitialContext(Term term) { if (!initialContextCreated) { PositionalContextOperator initialContext = new PositionalContextOperator(term, -1, false, false, false, null, contextStack.peek()); contextStack.offer(initialContext); term.setReversable(initialContext); initialContextCreated = true; } }
/** * Sets up the initial context once, at the start of a traversal. * * @param term The term to establish the initial positional traversal context for. */ private void createInitialContext(Term term) { if (!initialContextCreated) { PositionalContextOperator initialContext = new PositionalContextOperator(term, -1, false, false, false, null, contextStack.peek()); contextStack.offer(initialContext); term.setReversable(initialContext); initialContextCreated = true; } }
argument.setReversable(new ContextOperator(contextSymbolTable, createTermOperator(argument, i, functor))); argument.setTermTraverser(this); argument.setReversable(new ContextOperator(contextSymbolTable, i, createTermOperator(argument, i, functor))); argument.setTermTraverser(this);
argument.setReversable(new ContextOperator(contextSymbolTable, createTermOperator(argument, i, functor))); argument.setTermTraverser(this); argument.setReversable(new ContextOperator(contextSymbolTable, i, createTermOperator(argument, i, functor))); argument.setTermTraverser(this);