summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/gen/WeightedGrammar.java
diff options
context:
space:
mode:
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.java89
1 files changed, 40 insertions, 49 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 7c3ea6a..623c212 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/gen/WeightedGrammar.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/gen/WeightedGrammar.java
@@ -53,6 +53,7 @@ public class WeightedGrammar<E> {
*/
public WeightedGrammar(Random src) {
this();
+
sr = src;
}
@@ -67,9 +68,7 @@ public class WeightedGrammar<E> {
* The case being added.
*/
public void addCase(E rule, int prob, FunctionalList<E> cse) {
- WeightedRandom<FunctionalList<E>> rn = rules.get(rule);
-
- rn.addProb(prob, cse);
+ rules.get(rule).addProb(prob, cse);
}
/**
@@ -231,32 +230,12 @@ public class WeightedGrammar<E> {
}
/**
- * Create a series of alternatives for a rule by prefixing them with a
- * given token
+ * Check if this grammar has an initial rule
*
- * @param addProb
- * The amount to adjust the probability by
- * @param rName
- * The name of the rule to prefix
- * @param prefixToken
- * The token to prefix to the rule
+ * @return Whether or not this grammar has an initial rule
*/
- public void prefixRule(E rName, E prefixToken, int addProb) {
- WeightedRandom<FunctionalList<E>> rule = rules.get(rName);
-
- FunctionalList<Pair<Integer, FunctionalList<E>>> newResults = new FunctionalList<>();
-
- rule.getValues().forEach((par) -> {
- FunctionalList<E> nl = par
- .merge((left, right) -> right.clone());
- nl.prepend(prefixToken);
-
- newResults.add(new Pair<>(
- par.merge((left, right) -> left) + addProb, nl));
- });
-
- newResults.forEach((par) -> par
- .doWith((left, right) -> addCase(rName, left, right)));
+ public boolean hasInitRule() {
+ return initRule != null && !initRule.equalsIgnoreCase("");
}
/**
@@ -292,17 +271,41 @@ public class WeightedGrammar<E> {
nls.add(nl);
}
- nls.forEach((ls) -> {
- newResults.add(new Pair<>(
- par.merge((left, right) -> left) + addProb, ls));
- });
+ nls.forEach((ls) -> newResults.add(new Pair<>(
+ par.merge((left, right) -> left) + addProb, ls)));
});
- newResults.forEach((par) -> {
- par.doWith((left, right) -> {
- addCase(rName, left, right);
- });
+ newResults.forEach((par) -> par
+ .doWith((left, right) -> addCase(rName, left, right)));
+ }
+
+ /**
+ * Create a series of alternatives for a rule by prefixing them with a
+ * given token
+ *
+ * @param addProb
+ * The amount to adjust the probability by
+ * @param rName
+ * The name of the rule to prefix
+ * @param prefixToken
+ * The token to prefix to the rule
+ */
+ public void prefixRule(E rName, E prefixToken, int addProb) {
+ WeightedRandom<FunctionalList<E>> rule = rules.get(rName);
+
+ FunctionalList<Pair<Integer, FunctionalList<E>>> newResults = new FunctionalList<>();
+
+ rule.getValues().forEach((par) -> {
+ FunctionalList<E> nl = par
+ .merge((left, right) -> right.clone());
+ nl.prepend(prefixToken);
+
+ newResults.add(new Pair<>(
+ par.merge((left, right) -> left) + addProb, nl));
});
+
+ newResults.forEach((par) -> par
+ .doWith((left, right) -> addCase(rName, left, right)));
}
/**
@@ -376,19 +379,7 @@ public class WeightedGrammar<E> {
par.merge((left, right) -> left) + addProb, nl));
});
- newResults.forEach((par) -> {
- par.doWith((left, right) -> {
- addCase(rName, left, right);
- });
- });
- }
-
- /**
- * Check if this grammar has an initial rule
- *
- * @return Whether or not this grammar has an initial rule
- */
- public boolean hasInitRule() {
- return initRule != null && !initRule.equalsIgnoreCase("");
+ newResults.forEach((par) -> par
+ .doWith((left, right) -> addCase(rName, left, right)));
}
}