summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils
diff options
context:
space:
mode:
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/data/Pair.java9
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/gen/WeightedGrammar.java31
2 files changed, 27 insertions, 13 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/Pair.java b/BJC-Utils2/src/main/java/bjc/utils/data/Pair.java
index 11ce79c..5bd9d63 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/data/Pair.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/data/Pair.java
@@ -1,5 +1,6 @@
package bjc.utils.data;
+import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.Function;
@@ -17,12 +18,12 @@ public class Pair<L, R> {
/**
* The left value of the pair
*/
- public L l;
+ private L l;
/**
* The right value of the pair
*/
- public R r;
+ private R r;
/**
* Create a new pair that holds two nulls.
@@ -70,4 +71,8 @@ public class Pair<L, R> {
public <E> E merge(BiFunction<L, R, E> bf) {
return bf.apply(l, r);
}
+
+ public void doWith(BiConsumer<L, R> bc) {
+ bc.accept(l, r);
+ }
}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/gen/WeightedGrammar.java b/BJC-Utils2/src/main/java/bjc/utils/gen/WeightedGrammar.java
index de1e7b8..7c3ea6a 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/gen/WeightedGrammar.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/gen/WeightedGrammar.java
@@ -247,15 +247,16 @@ public class WeightedGrammar<E> {
FunctionalList<Pair<Integer, FunctionalList<E>>> newResults = new FunctionalList<>();
rule.getValues().forEach((par) -> {
- FunctionalList<E> nl = par.r.clone();
+ FunctionalList<E> nl = par
+ .merge((left, right) -> right.clone());
nl.prepend(prefixToken);
- newResults.add(new Pair<>(par.l + addProb, nl));
+ newResults.add(new Pair<>(
+ par.merge((left, right) -> left) + addProb, nl));
});
- newResults.forEach((par) -> {
- addCase(rName, par.l, par.r);
- });
+ newResults.forEach((par) -> par
+ .doWith((left, right) -> addCase(rName, left, right)));
}
/**
@@ -281,7 +282,8 @@ public class WeightedGrammar<E> {
// TODO bugtest this. if it works, write multiSuffixWith
for (int i = 1; i <= nTimes; i++) {
- FunctionalList<E> nl = par.r.clone();
+ FunctionalList<E> nl = par
+ .merge((left, right) -> right.clone());
for (int j = 1; j <= i; j++) {
nl.prepend(prefixToken);
@@ -291,12 +293,15 @@ public class WeightedGrammar<E> {
}
nls.forEach((ls) -> {
- newResults.add(new Pair<>(par.l + addProb, ls));
+ newResults.add(new Pair<>(
+ par.merge((left, right) -> left) + addProb, ls));
});
});
newResults.forEach((par) -> {
- addCase(rName, par.l, par.r);
+ par.doWith((left, right) -> {
+ addCase(rName, left, right);
+ });
});
}
@@ -363,14 +368,18 @@ public class WeightedGrammar<E> {
FunctionalList<Pair<Integer, FunctionalList<E>>> newResults = new FunctionalList<>();
rule.getValues().forEach((par) -> {
- FunctionalList<E> nl = par.r.clone();
+ FunctionalList<E> nl = par
+ .merge((left, right) -> right.clone());
nl.add(prefixToken);
- newResults.add(new Pair<>(par.l + addProb, nl));
+ newResults.add(new Pair<>(
+ par.merge((left, right) -> left) + addProb, nl));
});
newResults.forEach((par) -> {
- addCase(rName, par.l, par.r);
+ par.doWith((left, right) -> {
+ addCase(rName, left, right);
+ });
});
}