summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/parserutils/TreeConstructor.java
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2016-03-21 21:42:46 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2016-03-21 21:42:46 -0400
commitfcf3b6695566ff7b6163a5573137d3ac28e3e32e (patch)
tree2ad2be505eb123ad766406f903571ad62c34e164 /BJC-Utils2/src/main/java/bjc/utils/parserutils/TreeConstructor.java
parent523eea5fdbecaea141f3aafe89b307f1e9e75b25 (diff)
Minor polishing of things
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/parserutils/TreeConstructor.java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/parserutils/TreeConstructor.java22
1 files changed, 15 insertions, 7 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/TreeConstructor.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/TreeConstructor.java
index 9c920d2..e1a03f1 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/parserutils/TreeConstructor.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/TreeConstructor.java
@@ -31,8 +31,8 @@ public class TreeConstructor {
*/
public static <T> AST<T> constructTree(FunctionalList<T> toks,
Predicate<T> opPredicate) {
- GenHolder<Pair<Deque<AST<T>>, AST<T>>> initState = new GenHolder<>(
- new Pair<>(new LinkedList<>(), null));
+ GenHolder<Pair<Deque<AST<T>>, AST<T>>> initState =
+ new GenHolder<>(new Pair<>(new LinkedList<>(), null));
toks.forEach((ele) -> {
if (opPredicate.test(ele)) {
@@ -46,18 +46,26 @@ public class TreeConstructor {
AST<T> newAST = new AST<T>(ele, left, right);
deq.push(newAST);
-
+
return newAST;
});
- Pair<Deque<AST<T>>, AST<T>> newPair = new Pair<>(lft,
- mergedAST);
+ Pair<Deque<AST<T>>, AST<T>> newPair =
+ new Pair<>(lft, mergedAST);
return newPair;
});
} else {
- initState.doWith((par) -> par
- .doWith((deq, ast) -> deq.push(new AST<>(ele))));
+ AST<T> newAST = new AST<>(ele);
+
+ initState.doWith((par) -> par.doWith((deq, ast) -> {
+ deq.push(newAST);
+ }));
+
+ initState.transform((par) -> {
+ return (Pair<Deque<AST<T>>, AST<T>>) par
+ .apply((d) -> d, (a) -> newAST);
+ });
}
});