diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-04 16:49:22 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-04 16:49:22 -0300 |
| commit | 899efcc5442804e312b6d98aa248ac3601da06d3 (patch) | |
| tree | bcab461c54260db7737db56b20661a9377e403cd /src/main/java/bjc/rgens/parser/Rule.java | |
| parent | 3b760ca916c6a88265e348d77ee1f6497dace0a4 (diff) | |
Update
Diffstat (limited to 'src/main/java/bjc/rgens/parser/Rule.java')
| -rwxr-xr-x | src/main/java/bjc/rgens/parser/Rule.java | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/src/main/java/bjc/rgens/parser/Rule.java b/src/main/java/bjc/rgens/parser/Rule.java index 4e43fd7..d0e5ec9 100755 --- a/src/main/java/bjc/rgens/parser/Rule.java +++ b/src/main/java/bjc/rgens/parser/Rule.java @@ -14,14 +14,30 @@ import java.util.Random; */ public class Rule { /** The name of this grammar rule. */ - public final String name; + public String name; /* The cases for this rule. */ private WeightedRandom<RuleCase> cases; + public static enum ProbType { + NORMAL, + DESCENDING, + BINOMIAL + } + + public ProbType prob; + + public int descentFactor; + + public int target; + public int bound; + public int trials; + public int recurLimit = 5; private int currentRecur; + private final static Random BASE = new Random(); + /** * Create a new grammar rule. * @@ -41,6 +57,8 @@ public class Rule { name = ruleName; cases = new WeightedRandom<>(); + + prob = ProbType.NORMAL; } /** @@ -76,7 +94,7 @@ public class Rule { * A random case from this rule. */ public RuleCase getCase() { - return cases.generateValue(); + return getCase(BASE); } /** @@ -89,7 +107,16 @@ public class Rule { * A random case from this rule. */ public RuleCase getCase(Random rnd) { - return cases.generateValue(rnd); + switch(prob) { + case DESCENDING: + return cases.getDescent(descentFactor, rnd); + case BINOMIAL: + return cases.getBinomial(target, bound, trials, rnd); + case NORMAL: + return cases.generateValue(rnd); + default: + return cases.generateValue(rnd); + } } /** |
