summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java')
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java21
1 files changed, 5 insertions, 16 deletions
diff --git a/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java b/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java
index 455fce6..ae85139 100755
--- a/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java
+++ b/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java
@@ -1,5 +1,7 @@
package bjc.rgens.parser.elements;
+import bjc.utils.data.IPair;
+
import bjc.rgens.parser.GenerationState;
import bjc.rgens.parser.GrammarException;
import bjc.rgens.parser.RecurLimitException;
@@ -16,24 +18,11 @@ public class ExpVariableCaseElement extends VariableCaseElement {
public void generate(GenerationState state) {
GenerationState newState = state.newBuf();
- if (state.rules.containsKey(varDef)) {
- Rule rl = state.rules.get(varDef);
-
- if(rl.doRecur()) {
- RuleCase destCase = state.rules.get(varDef).getCase();
- System.err.printf("\tFINE: Generating %s (from %s)\n", destCase, varDef);
-
- state.gram.generateCase(destCase, newState);
-
- rl.endRecur();
- } else {
- throw new RecurLimitException("Rule recurrence limit exceeded");
- }
- } else if (state.importRules.containsKey(varDef)) {
- RGrammar destGrammar = state.importRules.get(varDef);
+ IPair<RGrammar, Rule> par = state.findRule(varDef, true);
+ if(par != null) {
+ RGrammar destGrammar = par.getLeft();
newState.swapGrammar(destGrammar);
-
String res = destGrammar.generate(varDef, state);
/*