summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-08 19:06:14 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-08 19:06:14 -0300
commit33a165f0b0055d2bdf9a1fcaa639b31a7f87d9a6 (patch)
treeb208a7cd5b3c73ac13ba63a71b32059b90eb3275 /src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java
parent44a8d9d2d56a311293ec86ea40df7126748300a1 (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-xsrc/main/java/bjc/rgens/parser/elements/RuleCaseElement.java41
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) {