summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/RGrammarBuilder.java
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-03 23:59:30 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-04 00:01:28 -0300
commit5c416488ef63b5004ca424de56894eb17712f116 (patch)
treeb16cb41e704f8046ce75d094bfe5968116d93dfe /src/main/java/bjc/rgens/parser/RGrammarBuilder.java
parent63aaf20560a2c4037cab8a7ef5fd6251d6036a2d (diff)
Add recurrance limit
This controls the number of times a rule can be entered into during a single generations, and is set to 5 by default
Diffstat (limited to 'src/main/java/bjc/rgens/parser/RGrammarBuilder.java')
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammarBuilder.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/main/java/bjc/rgens/parser/RGrammarBuilder.java b/src/main/java/bjc/rgens/parser/RGrammarBuilder.java
index 047567d..bc93fa6 100755
--- a/src/main/java/bjc/rgens/parser/RGrammarBuilder.java
+++ b/src/main/java/bjc/rgens/parser/RGrammarBuilder.java
@@ -275,6 +275,17 @@ public class RGrammarBuilder {
rules.get(ruleName).replaceCases(newCaseList);
}
+ public void setRuleRecur(String ruleName, int recurLimit) {
+ if (ruleName == null) {
+ throw new NullPointerException("ruleName must not be null");
+ } else if (ruleName.equals("")) {
+ throw new IllegalArgumentException("The empty string is not a valid rule name");
+ } else if (!rules.containsKey(ruleName)) {
+ throw new IllegalArgumentException(String.format("The rule '%s' doesn't exist", ruleName));
+ }
+
+ rules.get(ruleName).recurLimit = recurLimit;
+ }
/*
* @TODO
*