diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-03-21 21:42:46 -0400 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-03-21 21:42:46 -0400 |
| commit | fcf3b6695566ff7b6163a5573137d3ac28e3e32e (patch) | |
| tree | 2ad2be505eb123ad766406f903571ad62c34e164 /BJC-Utils2/src/main/java/bjc/utils/parserutils/TreeConstructor.java | |
| parent | 523eea5fdbecaea141f3aafe89b307f1e9e75b25 (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.java | 22 |
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); + }); } }); |
