diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-08 19:06:14 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-08 19:06:14 -0300 |
| commit | 33a165f0b0055d2bdf9a1fcaa639b31a7f87d9a6 (patch) | |
| tree | b208a7cd5b3c73ac13ba63a71b32059b90eb3275 /src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java | |
| parent | 44a8d9d2d56a311293ec86ea40df7126748300a1 (diff) | |
Major refactoring
A major refactoring to the internals of how things work. I believe that
nothing is broken
Diffstat (limited to 'src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java')
| -rwxr-xr-x | src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java | 41 |
1 files changed, 32 insertions, 9 deletions
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<VariableElement> elements; + + public RuleCaseElement(String vl) { + super(true); + + this.elements = VariableElement.parseElementString(vl); + } + + public RuleCaseElement(String vl, List<VariableElement> 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) { |
