summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/RGrammar.java
diff options
context:
space:
mode:
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
*