summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-05 15:52:44 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-05 15:52:44 -0300
commitf25d1062a56a81b17348b799e6d4d7e1dc12a1cc (patch)
tree1e2966389381204cf799732742b135fa85fad923 /src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java
parent0164b842d14675b0a28dd143d36923e690e75d27 (diff)
Templates pt.2
More work that leads towards getting templates working
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);
/*