From f25d1062a56a81b17348b799e6d4d7e1dc12a1cc Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Tue, 5 Jun 2018 15:52:44 -0300 Subject: Templates pt.2 More work that leads towards getting templates working --- .../parser/elements/ExpVariableCaseElement.java | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) (limited to 'src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java') 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 par = state.findRule(varDef, true); + if(par != null) { + RGrammar destGrammar = par.getLeft(); newState.swapGrammar(destGrammar); - String res = destGrammar.generate(varDef, state); /* -- cgit v1.2.3