diff options
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/gen/WeightedGrammar.java')
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/gen/WeightedGrammar.java | 31 |
1 files changed, 20 insertions, 11 deletions
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); + }); }); } |
