summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/RGrammar.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/RGrammar.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/RGrammar.java')
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammar.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/main/java/bjc/rgens/parser/RGrammar.java b/src/main/java/bjc/rgens/parser/RGrammar.java
index 0c572a7..e650a27 100755
--- a/src/main/java/bjc/rgens/parser/RGrammar.java
+++ b/src/main/java/bjc/rgens/parser/RGrammar.java
@@ -155,10 +155,17 @@ public class RGrammar {
}
}
- RuleCase start = rules.get(fromRule).getCase(state.rnd);
+ Rule rl = rules.get(fromRule);
- generateCase(start, state);
+ if(rl.doRecur()) {
+ RuleCase start = rules.get(fromRule).getCase(state.rnd);
+ generateCase(start, state);
+
+ rl.endRecur();
+ } else {
+ throw new RecurLimitException("Rule recurrence limit exceeded");
+ }
/*
* @NOTE
*