From 33a165f0b0055d2bdf9a1fcaa639b31a7f87d9a6 Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Fri, 8 Jun 2018 19:06:14 -0300 Subject: Major refactoring A major refactoring to the internals of how things work. I believe that nothing is broken --- .../bjc/rgens/parser/elements/RuleCaseElement.java | 41 +++++++++++++++++----- 1 file changed, 32 insertions(+), 9 deletions(-) (limited to 'src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java') diff --git a/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java b/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java index 6aa50fc..f13dbdb 100755 --- a/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java @@ -4,23 +4,46 @@ import bjc.utils.data.IPair; import bjc.utils.data.Pair; import bjc.rgens.parser.*; +import bjc.rgens.parser.elements.vars.*; +import java.util.ArrayList; +import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -public abstract class RuleCaseElement extends StringCaseElement { - public static enum ReferenceType { - DEPENDENT, - VARIABLE, - NORMAL +public class RuleCaseElement extends CaseElement { + public List elements; + + public RuleCaseElement(String vl) { + super(true); + + this.elements = VariableElement.parseElementString(vl); + } + + public RuleCaseElement(String vl, List elements) { + super(true); + + this.elements = elements; } - public final ReferenceType ref; + public void generate(GenerationState state) { + GenerationState newState = state.newBuf(); + + boolean inName = false; + + for(VariableElement elm : elements) { + elm.generate(newState); + + if(inName == false) inName = elm.forbidSpaces; + } - protected RuleCaseElement(String vl, ReferenceType ref) { - super(vl, false); + String body = newState.contents.toString(); - this.ref = ref; + if(inName) { + doGenerate(String.format("[%s]", body), state); + } else { + state.contents.append(body); + } } protected void doGenerate(String actName, GenerationState state) { -- cgit v1.2.3