diff options
Diffstat (limited to 'src/main/java/bjc/rgens/parser/RGrammar.java')
| -rwxr-xr-x | src/main/java/bjc/rgens/parser/RGrammar.java | 11 |
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 * |
