From fcf3b6695566ff7b6163a5573137d3ac28e3e32e Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Mon, 21 Mar 2016 21:42:46 -0400 Subject: Minor polishing of things --- .../src/main/java/bjc/utils/parserutils/AST.java | 6 +++--- .../bjc/utils/parserutils/TreeConstructor.java | 22 +++++++++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) (limited to 'BJC-Utils2/src/main/java/bjc/utils/parserutils') diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/AST.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/AST.java index 7b93cc9..153fc41 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/parserutils/AST.java +++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/AST.java @@ -88,7 +88,7 @@ public class AST { * @return The collapsed value of the tree */ public E collapse(Function tokenTransform, - Map> nodeTransform, + Function> nodeTransform, Function resultTransform) { return resultTransform .apply(internalCollapse(tokenTransform, nodeTransform)); @@ -98,7 +98,7 @@ public class AST { * Internal recursive collapser */ private T2 internalCollapse(Function tokenTransform, - Map> nodeTransform) { + Function> nodeTransform) { if (left == null && right == null) { return tokenTransform.apply(token); } else { @@ -107,7 +107,7 @@ public class AST { T2 rightCollapsed = right.internalCollapse(tokenTransform, nodeTransform); - return nodeTransform.get(token).apply(leftCollapsed, + return nodeTransform.apply(token).apply(leftCollapsed, rightCollapsed); } } 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 AST constructTree(FunctionalList toks, Predicate opPredicate) { - GenHolder>, AST>> initState = new GenHolder<>( - new Pair<>(new LinkedList<>(), null)); + GenHolder>, AST>> initState = + new GenHolder<>(new Pair<>(new LinkedList<>(), null)); toks.forEach((ele) -> { if (opPredicate.test(ele)) { @@ -46,18 +46,26 @@ public class TreeConstructor { AST newAST = new AST(ele, left, right); deq.push(newAST); - + return newAST; }); - Pair>, AST> newPair = new Pair<>(lft, - mergedAST); + Pair>, AST> newPair = + new Pair<>(lft, mergedAST); return newPair; }); } else { - initState.doWith((par) -> par - .doWith((deq, ast) -> deq.push(new AST<>(ele)))); + AST newAST = new AST<>(ele); + + initState.doWith((par) -> par.doWith((deq, ast) -> { + deq.push(newAST); + })); + + initState.transform((par) -> { + return (Pair>, AST>) par + .apply((d) -> d, (a) -> newAST); + }); } }); -- cgit v1.2.3