From 05c9922b30cd0dcd2a452673c2e155215d074b19 Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Tue, 5 Jun 2018 22:09:23 -0300 Subject: Templates pt. 3 Templates should now work, though there is no syntax to reference them from rules yet In addition, several internal things have been changed so as to improve code quality --- .../parser/elements/RuleVarRefCaseElement.java | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) (limited to 'src/main/java/bjc/rgens/parser/elements/RuleVarRefCaseElement.java') diff --git a/src/main/java/bjc/rgens/parser/elements/RuleVarRefCaseElement.java b/src/main/java/bjc/rgens/parser/elements/RuleVarRefCaseElement.java index a7be1bb..3192558 100644 --- a/src/main/java/bjc/rgens/parser/elements/RuleVarRefCaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/RuleVarRefCaseElement.java @@ -19,29 +19,14 @@ public class RuleVarRefCaseElement extends StringCaseElement { throw new GrammarException("No rule variable named " + val); } - IPair par = state.rlVars.get(val); + Rule rl = state.rlVars.get(val); GenerationState newState = state.newBuf(); - newState.swapGrammar(par.getLeft()); - if(par.getRight().doRecur()) { - RuleCase cse = par.getRight().getCase(state.rnd); - System.err.printf("\tFINE: Generating %s (from %s)\n", cse, par.getRight().name); - - par.getLeft().generateCase(cse, newState); - - par.getRight().endRecur(); - } else { - throw new RecurLimitException("Rule recurrence limit exceeded"); - } + rl.generate(newState); String res = newState.contents.toString(); - if (par.getRight().name.contains("+")) { - /* Rule names with pluses in them get space-flattened */ - state.contents.append(res.replaceAll("\\s+", "")); - } else { - state.contents.append(res); - } + state.contents.append(res); } } -- cgit v1.2.3