From f51f6da7319787348c38b875652b5c0e9f88c8aa Mon Sep 17 00:00:00 2001 From: Ben Culkin Date: Mon, 13 Apr 2020 18:43:13 -0400 Subject: Cleanup pass Pass to do some cleanups --- .../java/bjc/data/TopDownTransformIterator.java | 66 ++++++++++++---------- 1 file changed, 37 insertions(+), 29 deletions(-) (limited to 'src/main/java/bjc/data/TopDownTransformIterator.java') diff --git a/src/main/java/bjc/data/TopDownTransformIterator.java b/src/main/java/bjc/data/TopDownTransformIterator.java index 66faafe..3b4b997 100644 --- a/src/main/java/bjc/data/TopDownTransformIterator.java +++ b/src/main/java/bjc/data/TopDownTransformIterator.java @@ -12,30 +12,31 @@ import java.util.function.Function; /* * @TODO 10/11/17 Ben Culkin :TopDownStep - * + * * Figure out what is broken with this, and fix it so that step-wise * iteration works correctly. */ /** * An iterative top-down transform of a tree. - * + * * @author EVE * * @param - * The type of the nodes in the tree. + * The type of the nodes in the tree. */ -public class TopDownTransformIterator implements Iterator> { +public class TopDownTransformIterator + implements Iterator> { /** * Alias type for a tree transformation. - * + * * @author student * * @param - * The type contained in the tree. + * The type contained in the tree. */ - public interface TreeTransform - extends BiFunction, Consumer>>, ITree> { + public interface TreeTransform extends BiFunction, + Consumer>>, ITree> { // Alias type; no body is needed } @@ -64,32 +65,34 @@ public class TopDownTransformIterator implements Iterator pickr, - final TreeTransform transfrm, final ITree tree) { + public TopDownTransformIterator( + final Function pickr, + final TreeTransform transfrm, + final ITree tree) { preParent = tree; - preChildren = new LinkedList<>(); + preChildren = new LinkedList<>(); postChildren = new LinkedList<>(); - toYield = new LinkedList<>(); + toYield = new LinkedList<>(); - picker = pickr; + picker = pickr; transform = transfrm; - done = false; + done = false; initial = true; } /** * Add a set of nodes to yield. - * + * * @param src * The nodes to yield. */ @@ -108,10 +111,10 @@ public class TopDownTransformIterator implements Iterator flushYields(final ITree val) { @@ -158,7 +161,7 @@ public class TopDownTransformIterator implements Iterator implements Iterator(preParent.getHead()), this::addYield)); + return flushYields( + transform.apply(new Tree<>(preParent.getHead()), this::addYield)); case PULLUP: - final ITree intRes = transform.apply(preParent, this::addYield); + final ITree intRes + = transform.apply(preParent, this::addYield); postParent = new Tree<>(intRes.getHead()); @@ -228,10 +233,11 @@ public class TopDownTransformIterator implements Iterator(picker, transform, preChildren.pop()); + curChild = new TopDownTransformIterator<>(picker, transform, + preChildren.pop()); final ITree res = curChild.next(); - //System.out.println("\t\tTRACE: adding node " + res + " to children"); + // System.out.println("\t\tTRACE: adding node " + res + " to children"); postChildren.add(res); return flushYields(res); @@ -242,7 +248,8 @@ public class TopDownTransformIterator implements Iterator(preParent.getHead()); - //System.out.println("\t\tTRACE: adding nodes " + postChildren + " to " + res); + // System.out.println("\t\tTRACE: adding nodes " + postChildren + " to " + + // res); for (final ITree child : postChildren) { res.addChild(child); @@ -253,7 +260,8 @@ public class TopDownTransformIterator implements Iterator child : postChildren) { res.addChild(child); } @@ -264,7 +272,7 @@ public class TopDownTransformIterator implements Iterator res = curChild.next(); - //System.out.println("\t\tTRACE: adding node " + res + " to children"); + // System.out.println("\t\tTRACE: adding node " + res + " to children"); postChildren.add(res); return flushYields(res); -- cgit v1.2.3