summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/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
parent523eea5fdbecaea141f3aafe89b307f1e9e75b25 (diff)
Minor polishing of things
Diffstat (limited to 'BJC-Utils2/src/main/java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/dice/CompoundDice.java7
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/dice/DiceExpressionParser.java4
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/parserutils/AST.java6
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/parserutils/TreeConstructor.java22
4 files changed, 24 insertions, 15 deletions
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<T> {
* @return The collapsed value of the tree
*/
public <E, T2> E collapse(Function<T, T2> tokenTransform,
- Map<T, BinaryOperator<T2>> nodeTransform,
+ Function<T, BinaryOperator<T2>> nodeTransform,
Function<T2, E> resultTransform) {
return resultTransform
.apply(internalCollapse(tokenTransform, nodeTransform));
@@ -98,7 +98,7 @@ public class AST<T> {
* Internal recursive collapser
*/
private <T2> T2 internalCollapse(Function<T, T2> tokenTransform,
- Map<T, BinaryOperator<T2>> nodeTransform) {
+ Function<T, BinaryOperator<T2>> nodeTransform) {
if (left == null && right == null) {
return tokenTransform.apply(token);
} else {
@@ -107,7 +107,7 @@ public class AST<T> {
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 <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);
+ });
}
});