diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-05 15:52:44 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-05 15:52:44 -0300 |
| commit | f25d1062a56a81b17348b799e6d4d7e1dc12a1cc (patch) | |
| tree | 1e2966389381204cf799732742b135fa85fad923 /src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java | |
| parent | 0164b842d14675b0a28dd143d36923e690e75d27 (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-x | src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java | 21 |
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); /* |
