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/dice/CompoundDice.java | 7 +++++-- .../java/bjc/utils/dice/DiceExpressionParser.java | 4 +--- .../src/main/java/bjc/utils/parserutils/AST.java | 6 +++--- .../bjc/utils/parserutils/TreeConstructor.java | 22 +++++++++++++++------- 4 files changed, 24 insertions(+), 15 deletions(-) (limited to 'BJC-Utils2/src/main/java') diff --git a/BJC-Utils2/src/main/java/bjc/utils/dice/CompoundDice.java b/BJC-Utils2/src/main/java/bjc/utils/dice/CompoundDice.java index 3dd70ff..4e2e9f3 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/dice/CompoundDice.java +++ b/BJC-Utils2/src/main/java/bjc/utils/dice/CompoundDice.java @@ -33,8 +33,11 @@ public class CompoundDice implements IDiceExpression { } public CompoundDice(String l, String r) { - this.l = ComplexDice.fromString(l); - this.r = ComplexDice.fromString(r); + this(ComplexDice.fromString(l), ComplexDice.fromString(r)); + } + + public CompoundDice(String[] exps) { + this(exps[0], exps[1]); } @Override diff --git a/BJC-Utils2/src/main/java/bjc/utils/dice/DiceExpressionParser.java b/BJC-Utils2/src/main/java/bjc/utils/dice/DiceExpressionParser.java index 12b85f7..a7d1f8c 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/dice/DiceExpressionParser.java +++ b/BJC-Utils2/src/main/java/bjc/utils/dice/DiceExpressionParser.java @@ -67,9 +67,7 @@ public class DiceExpressionParser { && !tok.equalsIgnoreCase("c")) { String[] strangs = tok.split("c"); - dexps.push(new CompoundDice( - ComplexDice.fromString(strangs[0]), - ComplexDice.fromString(strangs[1]))); + dexps.push(new CompoundDice(strangs)); } else if (StringUtils.countMatches(tok, 'd') == 1 && !tok.equalsIgnoreCase("d")) { /* 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